サイトアイコン IT NEWS

LinuxのcurlコマンドでSSL証明書のエラーが出た時の回避策

linux-curl-ssl-error

Linuxcurlコマンドを叩いたら「curl: (60) SSL certificate problem・・・」と返ってきた。
自分の拙い英語力でも、どうやらSSL証明書の問題だとわかるが、無料の証明書ではあるが問題なく更新できているはずなのに。
調べてみると、一時的にcurlコマンドを正常に実行できる回避策を見つけたのでメモします。

curlコマンドでSSL証明書エラー

curl: (60) SSL certificate problem: certificate has expired・・・

Google先生で翻訳すると…

curl:(60)SSL証明書の問題:証明書の有効期限が切れています

Google翻訳

ですが、SSL証明書はきちんと取得しているので、curlコマンドオプションで何とか解決できないか調べてみました。

curlコマンドのオプションでエラー回避

参考サイトの中から、今回のSSL証明書エラーを回避できそうなオプションを探しています。


# HTTPリクエストを実施し結果を標準出力へ
$ curl http://対象のURL

#コンマや[]を使って範囲指定も出来る
$ curl 'http://{one,two,three}.example.com'
$ curl 'http://[1-3].example.com'

# 実行結果をファイルへ出力
$ curl http://対象のURL > 出力先
$ curl -o 出力先PATH http://対象のURL

# ファイル出力時の進捗状況を非表示にする(エラーも非表示)
$ curl -s -o 出力先PATH http://対象のURL

# 上記でエラーは表示したい場合
$ curl -sS -o 出力先PATH http://対象のURL

# プログレスバーで進捗率を表示
$ curl -# -O http://対象のURL

# SSL接続で証明書エラーをスキップ
$ curl -k https://対象のURL

# URLのファイル名でダウンロード (下記はindex.htmlで保存される)
$ curl -O http://対象のURL/index.html

# プロキシ経由でアクセスする
$ curl -x プロキシサーバ:ポート番号 --proxy-user ユーザ名:パスワード http://対象のURL

# リダイレクトを有効にする
$ curl -L http://対象のURL

# ダウンロードを中断したときに再度ダウンロードを再開するとき
$ curl -C - http://対象のURL

# HTTPメソッドの指定(-X)
$ curl -X PUT http://対象のURL

はい、見つけましたね!
SSL接続で証明書エラーをスキップするオプション「-k」がそれです。
curlコマンドオプションは上記以外にも多く存在します。

その他curlコマンドのオプション

オプション説明
-d, –data PARAMPOSTリクエストとしてフォームを送信する。
-e, –refererURL リファラーをURLで指定する
-f, –failサーバエラーが発生したら黙って終了する
-i, –includeHTTPヘッダを出力に含める
-m, –max-timeTIME 最大転送時間をTIME秒に制限する
-o FILE取得したデータを指定したファイルFILEに出力する
-s, –silent進捗状況やエラーを表示しない
-u USER[:PASS]認証に用いるユーザー名USER, パスワードPASSを指定する(基本認証など)
-v, –verbose処理状況の更なる詳細や説明を出力させます。
-x HOST[:PORT]プロキシサーバとしてホストHOSTおよびポートPORTを利用
-y, –speed-time転送速度が指定した速度をTIME秒の間下回ったらダウンロードを終了する。
-A, –user-agentAGENT ユーザーエージェントAGENTを指定
-H, –headHEADER HTTPヘッダにHEADERを追加もしくは変更する
-I, –headヘッダ情報を取得する
-O, –remote-name取得したデータを標準出力ではなくファイルに出力する
-R, –remote-timeダウンロードしたファイルのタイムスタンプをサーバ上のタイムスタンプに合わせる
-L, –location要求したページにリダイレクトが掛かっていた場合に追従する
引用:よく使うcurlコマンドのオプション – Qiita

この他にもオプションがたくさんあって、かなり奥が深いですね。
全部覚えられないので、都度検索するようにしています。

以上、オプションだけでエラー回避できて良かったです。

モバイルバージョンを終了