web-dev-qa-db-ja.com

TLS証明書とMacOSのグラウンドトゥルースを求めて-ブラウザ、curl、opensslを比較

MacのHighSierra 10.13.5では、TLS認証の検証に違いが見られます。 ChromeとSafariは訪問時にTLS検証に満足しています https://www.visitflorida.com 。また、curlには苦情がなく、私は '-kを使用していません'。ただし、opensslは、これを試行すると中間証明書が見つからないと文句を言いますopenssl s_client -connect www.visitflorida.com:443 < /dev/null | openssl x509 -subject -noout。基本のopensslとbrew-installedの両方を使用しました。

-CAfile middle.pem(TrustWaveから中間証明書をダウンロードした場所)を追加しようとしました。中間証明書がKeyChainのどこにも表示されない場合でも、KeyChainシステムルートを単一のファイルにエクスポートし、-CAfileを介してそれを試しました。何も機能していません。証明書が表示される唯一のファイルシステムの場所は/etc/ssl/cert.pemであり、-CAfileを介してそれを指定すると、それでも失敗します。

誰かが私のブラウザとcurlはopensslよりもTLS検証の要件が緩いことを示唆しています。それは本当ですか?私はそれを信じるのに苦労しています。誰かが私がこの振る舞いを説明するのを手伝ってもらえますか?

ところで、これはwww.visitflorida.comのTLSエンドポイントのエンドポイント証明書に中間証明書を含めることで解決できることを私は知っています。不足しているキーファイルを見つけることができれば!

ブラウザの幸福: screenshot of browser validation

カールログ: curl output

1
Kevin Buchs

Internet Explorer/EdgeなどのブラウザChromeおよびSafariは、AIA拡張機能のcaIssuerフィールドでURLを確認します。このフィールドから、サーバーから提供されていない場合に、上位のCAの証明書をダウンロードできます。 TLSハンドシェイク。

Webサイトの証明書のcaIssuerフィールドはhttp://ssl.trustwave.com/issuers/OVCA2_L1.crtに設定されているため、上記のすべてのブラウザーはそのURLから証明書をダウンロードし、それを使用してチェーンを構築します。

OpenSSLのs_clientなどのコマンドラインツールは、caIssuerを使用してこの追加の証明書をダウンロードしないため、あなたが目撃した状況です。 Mozilla Firefoxを試してみると、Mozillaがこの拡張機能の使用を拒否しているのと同じことに気付くでしょう。

CaIssuerフィールドは、サーバー管理者が悪いという本当の問題を隠蔽することになります。 RFC 5246セクション7.4.2 は、サーバーが独自の証明書とそれに続く中間CA証明書で構成されるcertificate_listを送信する必要があることを示しています。

3
garethTheRed