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

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

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

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Cygwin

Cygwinは、Unixのような環境を、Windows上で構築させるコマンドラインインターフェースです。

Q&A

解決済

2回答

8392閲覧

Cygwinのcurlでhttpsをアクセスするときのエラー

usugita_san

総合スコア226

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Cygwin

Cygwinは、Unixのような環境を、Windows上で構築させるコマンドラインインターフェースです。

0グッド

0クリップ

投稿2017/02/10 04:59

Cygwinでcurlを実行して、httpsのアクセスをしようと考えています。

curlのバージョンは7.52.1 です。
アクセスしようとした先は
https://localhost/hogehoge
です。
以下のように実行しています。

cygwin

1$ curl https://localhost/hogehoge

以下のようなエラーが表示されます。

curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.

こちらのサイトを参考にして curl-ca-bundle.crt を更新してみました。
http://www.turbolinux.com/support/document/knowledge/866.html
/usr/share/curl/curl-ca-bundle.crt というファイルは作られ、中身もそれっぽい情報になっています。
しかし状況は改善されません。
こちらのサイトには、curlの日本語ドキュメントへのリンクがあったのですが、URLがリンク切れになっていて、正確な情報が良くわかりません。

この後どうすればhttpsでcurlが使えるのでしょうか?
-kをつかれば一応通信できるのですが、どうにも気持ち悪いのです。
宜しくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

-kをつけて証明書チェックを無視すれば問題ありません。

気持ち悪いと感じるのは、何のために証明書チェックが存在し、
無視することでどのような影響があるかをきちんと理解されていないからでしょう。

超簡単に説明すると、httpsで通信する際、相手先が信頼できるドメインであるかチェックします。

https://localhost/hogehoge ~~~~~~~~~ ↑ドメインとはの部分です

「信頼できるドメイン」とは、自身が保持している信頼された証明書リストで照合できることです。
「信頼された証明書リスト」とは、今回の場合 /usr/share/curl/curl-ca-bundle.crt です。

よって、curl-ca-bundle.crt に localhostは信頼された相手先。と
書かれていなければエラーが出ることになります。
当然、一般公開されている証明書リストに localhostは信頼された相手先。 とは
書かれていませんので、実施された手順では改善されません。

回避策は、別の方も書かれているようにプライベートCAを構築して、
localhostは信頼された相手先 と書かれたリストを生成するか、
証明書チェックを無視するかの2択になります。

やりたいことは恐らく単純にWebページにアクセスすることだと思いますので、
証明書チェックを無視するべきでしょう。

投稿2017/02/10 06:40

fusechi

総合スコア128

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

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

usugita_san

2017/02/15 06:30

はい、おっしゃる通り、無視するという事の影響をちゃんと理解できてませんでした。 勉強が足りなかったですね。恥ずかしいです。
guest

0

「localhost」に紐付いた証明書は自己署名(オレオレ)証明書ですか?
そうであれば、エラーになるのは仕方ないかと。
公的な所から発行された証明書でなければ、いくらCAの証明書を更新してもエラーになります。

プライベートCAを構築して、エラーを出さないようにする方法もありますので、「プライベートCA」と「cygwin」あたりで検索してみて下さい。

投稿2017/02/10 05:13

編集2017/02/10 05:16
kanbeworks

総合スコア829

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問