25

PEM ファイルを /usr/local/share/ca-certificates/ にコピーして update-ca-certificates を実行したところ、結果の証明書が /etc/ssl/certs/ca-certificates.crt に含まれていることを確認しました。 curl-config --ca によって出力されたファイル。また、openssl s_client -connect example.com:443 によって出力された証明書が PEM ファイルと同一であることも確認しました。それでも、「エラー: 14090086: SSL ルーチン: SSL3_GET_SERVER_CERTIFICATE: 証明書の検証に失敗しました」というメッセージが引き続き表示されます。これは、 http: //curl.haxx.se/docs/sslcerts.html で説明されているように、curl の --cacert オプションを使用して使用する証明書を指定しても発生します。

curl -k を使用して証明書の検証を完全に無効にすると機能しますが、SSL を適切にテストすることになっているテスト ハーネスを作成しようとしているため、そうしたくありません。

lynx で同じ URL にアクセスすると問題なく動作しますが、SSL エラーがあると通常エラーが発生します。しかし、Tornado の AsyncHTTPClient で libcurl の代わりに Lynx を使用する方法を見つけられない限り、このテスト ハーネスに Lynx だけを使用することはできません。また、自己署名証明書をインストールすることで Lynx は満足するが、curl は満足しないということには意味がないようです。

Vagrant を搭載した VirtualBox で Ubuntu 12.04 LTS を使用しています。それはcurl 7.22.0を持っています。SSL ターミネーティング プロキシは同じマシンで実行されている nginx/1.3.13 であり、ドメイン名は /etc/hosts のエントリによって 127.0.0.1 を指しています。

何が問題なのか手がかりはありますか? ありがとう。

4

1 に答える 1

26

CA 署名付き証明書を使用していないサイトcURLを取得するためにを使用すると、次の問題が発生します。HTTPS

curl https://example.selfip.com
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

オプションを使用してこれを簡単に克服でき-kますが、より安全で永続的な解決策があります。

ステップ 1インストールで使用
するディレクトリを特定します。OpenSSL

openssl version -d
OPENSSLDIR: "/usr/lib/ssl"

ステップ 2
そのディレクトリに移動し、ディレクトリの内容を一覧表示します。というディレクトリが表示されcertsます。

cd /usr/lib/ssl && ls -al

ステップ 3
そのディレクトリに移動します。

cd certs

ディレクトリの内容を一覧表示します。シンボリック リンクから、証明書が実際に に保存されていることがわかります/usr/share/ca-certificates

ステップ 4ディレクトリに移動し、そこに自己署名証明書を追加します (例: your.cert.name.crt
)/usr/share/ca-certificates

ステップ 5
ディレクトリに移動/etcし、ファイルを編集しますca-certificates.conf

root@ubuntu:# cd /etc
root@ubuntu:# nano ca-certificates.conf

your.cert.name.crtファイル ( )に追加してca-certificates.conf保存します。

最後のステップ:

プログラムを実行しますupdate-ca-certificates –fresh
注:/etc/ssl/certsコマンドを実行する前にバックアップすることをお勧めします。

root@ubuntu:# update-ca-certificates --fresh
Clearing symlinks in /etc/ssl/certs...done.
Updating certificates in /etc/ssl/certs....done.
Running hooks in /etc/ca-certificates/update.d....done.

ターゲット HTTPS サイトで curl を使用してテストすると、すぐに機能するはずです。

ソース

于 2014-01-21T15:46:42.773 に答える