web-dev-qa-db-ja.com

SSL証明書はchromeで機能しますが、openssl s_clientまたはcurlでは機能しません

Google Chromeのバージョン58へのアップデートにより、数日前に自己署名証明書の無効化が始まりました。 subjectAltNamesが見つからないという不満がありました。私はいくつかの調査を行い、いくつかの提案(これは機能しないでしょう)を試しましたが、 この投稿 が見つかりました。

それとも私ですか?

Yay chromeは、新しく生成およびインポートされた証明書を受け入れており、途中で、

until、同じ開発マシン上の別のマイクロWebサービスからデータをロードする必要があるPHP Webアプリのページにヒットしました。

stream_socket_client():SSL操作がコード1で失敗しました。OpenSSLエラーメッセージ:error:14090086:SSLルーチン:ssl3_get_server_certificate:

私はこれを今から約4時間グーグルでいじくり回しており、頭を動かすことができません。

質問

chrome証明書を受け入れるのはなぜですか。ただし、curlopenssl s_clientすべて私に与えてunable to verify the first certificateまたはinvalid certificate?証明書をパラメーターとして渡そうとしましたが、明らかに無効です。

Curlおよびopensslを使用したデバッグで、証明書ファイルをパラメーターとして渡すと、このエラーが発生し続ける

SSL証明書検証結果:ローカル発行者証明書を取得できません(20)、

私は一日の終わりまでに完全にハゲになると思います。

注意事項

  • 仮想マシンは私のローカル開発環境なので、独自の証明書とキーを持つ複数のドメインがあります

  • VMはIP 192.168.33.10にあります。 chromeはlocalhostにアクセスしていません。ただし、curlとopenssl s_clinetはlocahostにアクセスしようとしています

  • サーバーはVM Ubuntuを実行している14.04

  • MMC(Microsofts管理コンソール)を使用してホストマシンに自己署名証明書をインストール

  • エラーは間違いなく、Webサービスにアクセスしようとしているクライアントクラスから発生しています。

  • 証明書をパラメーターとして渡そうとしましたが、明らかに無効です。

  • 私は検証ピアをfalseに設定するか、リクエストに--insecureを渡すことができることを十分に認識していますが、そこから何も学びません。

  • SSLセッション:プロトコル:TLSv1.2

  • 実行されたSudo dpkg-reconfigure ca-certificates証明書を更新する

  • 実行したSudo update_ca_ccertificates

  • 欲求不満レベル9000に達しました

更新を元に戻す

V3拡張機能をオフにして新しい証明書を再生成し、chromeに戻ってsubjectAltNameが見つからないことを通知しますが、curlは機能しています。両方のcurlおよびchromeが受け入れられます。

6
Jason Joslin

より明確なチュートリアル が見つかりましたが、はるかに単純ですopenssl.confSANsを追加する最初の試みでは、confにコメントを外した余分な行が含まれていて、競合を引き起こしている証明書に追加情報が追加されていました。このテンプレートに従って、私の証明書は一生懸命働いています:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = US
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = MN
localityName = Locality Name (eg, city)
localityName_default = Minneapolis
organizationalUnitName  = Organizational Unit Name (eg, section)
organizationalUnitName_default  = Domain Control Validated
commonName = Internet Widgits Ltd
commonName_max  = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = kb.example.com
DNS.2 = helpdesk.example.org
DNS.3 = systems.example.net
IP.1 = 192.168.1.1
IP.2 = 192.168.69.14

コメント@garethTheRedをありがとう。あなたのコメントは、この問題をデバッグするための私のアプローチを再考するのに役立ちました。

ここで投稿を開始することでも、私が試した結果をレイアウトし、脳がより多くの可能な解決策を考えるのに役立ちます。

2
Jason Joslin