質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

3547閲覧

curlコマンドでhttpsのAPIを叩きたい

nagomi72

総合スコア51

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

1グッド

1クリップ

投稿2019/05/28 02:27

編集2019/05/28 02:47

現状curlコマンドでhttpsのAPIを叩いた時、httpsが許可されていない旨の以下のエラーが発生します。

curl: (1) Protocol "https" not supported or disabled in libcurl

curl -Vで有効なプロトコルを調べるとhttpsが許可されていませんでした。

以下のコマンドのssl=の部分でOpenSSLの場所を指定するといいとのことなのですが、
コマンドを実行し、処理が完了したあともプロトコルにhttpsが追加されません。

./configure --with-ssl=~/local/ssl

私はxserverを利用しており、xserver上でopenssl versionを実行すると
OpenSSL 1.0.2k-fips 26 Jan 2017と表示されるため
OpenSSLはすでにインストールされているという認識です。

場所を調べるため

find -name ssl 2>/dev/null

とすると./local/sslが該当しました。

./local/sslに移動し、lsとすると
openssl.confがありこれを先程のconfigureコマンドで参照させるという認識です。

方法が違うのかご教授頂ければと存じます。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

「./configure --with-ssl=~/local/ssl」だけですと、Makefile が生成されただけですので

make

make install


作業も必要になるかと思います。

make install が実行できな場合は、make コマンドで作成された curl を指定して実行
して確認してみてはいかがでしょうか?

投稿2019/05/28 05:49

Lucifer_5342

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

./configureを行うには、curlソースコードが必要です。

単なる設定変更ではなく、「curlをコンパイルして再作成する」というのがconfiguremakeが行うことです。

投稿2019/05/28 02:36

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nagomi72

2019/05/28 02:50

wget http://curl.haxx.se/download/curl-7.37.0.tar.bz2 tar xf curl-7.37.0.tar.bz2 cd curl-7.37.0 ./configure --with-ssl=~/local/ssl と実行したところ、エラーは発生せず処理は完了しましたが、 有効なプロトコルにhttpsが追加されていない状況です。 対象にするopensslが誤っているのでしょうか。
maisumakun

2019/05/28 02:52

新しくコンパイルした方のcurlを呼び出せているかが気になります。
nagomi72

2019/05/28 03:04

make make install とするとhttpsが許可されるのでしょうか。(先程はconfigureしてmakeをしていない状況で回答しておりました) また、make installを実行するにはroot権限が必要のようで、xserverではroot権限は提供されていないため 別の方法を試す必要がありそうです…
guest

0

ベストアンサー

xserver上でcurlコマンドを叩いた場合、xserver上に元からあるcurlのバイナリ(以下、「xserverのcurl」)が呼び出されて実行されます。ご提示されているcurl -Vの結果から、このxserverのcurlは元々httpsにアクセスできない仕様となっているようです。ちなみに「バイナリ」とは、Windowsでいうところのexeファイル、実行ファイルのことです。

そのため、xserverのcurlでhttpsアクセスができるようにするためには、httpsアクセスを可能にしたバイナリと入れ替える必要があります。しかし、xserverのcurlの所有者は恐らくrootユーザでしょうから、xserverの管理者に頼み込むくらいしか方法はないかと思います。(たぶんNG回答でしょうが)

ではどうするかというと、xserverのcurlは使用せずに、自分でhttps可能なcurlバイナリを用意してそれを実行すればよいということになります。nagomi72さんが試されている、wget./configureはまさにそれで、curlのソースコードをダウンロードしてきて、バイナリを生成する準備まで行っていることになります。

configureの後、makeを実行するとコンパイルが行われ、バイナリが作成されます。make実行後にカレントディレクトリに生成されるcurlというファイルがこの「https可能なcurlバイナリ」となります。
make installは生成されたバイナリをインストール(といってもパスの通ったディレクトリにコピーされる程度ですが)するためのコマンドです。そのためこのコマンドを実行するにはroot権限が必要になります。

インストールをしなくても、生成されたバイナリ自体を実行することはできます。シェルで単にcurlと叩くと、xserverのcurlのほうが優先して実行されてしまいますので、生成したcurlを明示的に実行する必要があります。これにはパス付でファイルを指定してやります。(./curl)

手順をまとめると以下のとおりです。

$ cd (configureのあるディレクトリ) $ # 本来はここでwget~configureを行うが、すでに実行済みなのでスキップ $ make # curlのソースをコンパイルしてcurlが生成される $ ./curl -V # 生成したcurlでhttpsが有効か確認

投稿2019/06/02 05:12

tetsuy

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nagomi72

2019/06/03 00:18

大変勉強になりました。 詳細なご解説ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問