-CAfile

このコマンドを使用しているので、opensslを取得して証明書を指定せずに使用する方法:

openssl s_client -connect example.com:443 -CAfile /etc/ssl/certs/GTE_CyberTrust_Global_Root.pem 

動作します。CAfileを指定しないと、コード20が返されます。証明書は/etc/ssl/certs/usr/lib/ssl/certs -> /etc/ssl/certsこれはca-certificates.crt

opensslが私の証明書を見つけることができるかどうかを管理するものとそれを受け入れる方法にも含まれていますこの証明書を明示的に指定せずに?

コメント

  • GTE_CyberTrust_Global_Root.pemは中間CAですか?その場合、Webサーバーがサイト証明書とともにその中間CA証明書を提供できない可能性があります。 Webサーバー側のこの欠点により、一部のコンピューターとの互換性の問題が発生する可能性があります。一方、GTE_CyberTrust_Global_Root.pemがトップレベルのルート証明書である場合は、デフォルトで機能しているはずです。
  • @GeorgeBaileyありがとうございます。中級です。場所を共有しない本当の理由はありません:bigfishgames-a.akamaihd.net:443 'がウェブ担当者にこれを修正するように依頼している場合、何を質問しますか?自由に答えてください(つまり、"クライアントでできることは何もありません。サーバーは、X "を実行する必要があります)。
  • その'は奇妙です。 / etc / ssl / certsとca-certificates.crtに含まれていれば動作することを期待していました
  • まあ'サーバーかどうかはまだ明らかではありません問題です。サーバーが中間CA にサービスを提供しているようで、SSLLabsはCyberTrustをトップレベルのルートとして扱います。サイバートラストが中間体であることについてあなたは間違っているかもしれませんが、おそらくあなたは正しいです。 'わかりません。お気に入りのブラウザまたはSSLLabsので証明書チェーン/パスを確認してください。おそらく、opensslはトップレベルのルート証明書で構成されていませんか? google.com:443を試しましたか?
  • google.comでも同じ動作

回答

-CApathまたは-CAfile引数。 Ubuntu 14.04のOpenSSLには、次のように説明するように、このバグがあります。

バージョン:

ubuntu@puppetmaster:/etc/ssl$ openssl version OpenSSL 1.0.1f 6 Jan 2014 

デフォルトのストアを使用できない`-caを渡さないでください:

ubuntu@puppetmaster:/etc/ssl$ openssl s_client -quiet -connect gmail.com:443 depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA verify error:num=20:unable to get local issuer certificate verify return:0 

-CApathとしてnullを渡すと、次のように機能します。

ubuntu@puppetmaster:/etc/ssl$ openssl s_client -quiet -connect gmail.com:443 -CApath /dev/null depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority verify return:1 depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA verify return:1 depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2 verify return:1 depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = mail.google.com verify return:1 

残念ながら、影響を受けるOpenSSLバージョンのリストは存在しないと思います。知る方法はテストすることだけです。

コメント

  • ありがとうございます。そのバージョンを使用していました。OpenSSL1.1.0で問題が修正されていないようです。' mここにリストされている問題が表示されない: github.com/openssl/openssl/issues 問題を参照できますか?
  • それivid = 古いRT課題トラッカーの “9bcce9f01e”>

。そこにパッチがあります。'ログインの背後にある(guest:guest)'問題#3697、解決済みとマークされています。 rt.openssl.org/Ti cket / Display.html?id = 3697

  • わかりました。これは1.1で修正されていることを確認しました。少なくとも、そのリッチサルツフォークでは修正されています。アップグレードしたとき、最初はベースディレクトリが/usr/local/sslに移動し、証明書ディレクトリが/etc/ssl/certsにマップされていないことに気づきませんでした。
  • CentOS 6.8(OpenSSL 1.0.1e-fips 2013年2月11日)にバグが存在することを確認できます。
  • また、openssl version -dは基本構成ディレクトリを提供します…
  • 回答

    "How to get openssl to use a cert without specifying it via -CAfile". 

    同じでした要件。ローカルで"信頼できる"のCAのディレクトリを使用したかったのです。デフォルトのTrust storeによる汚染結果は必要ありませんでした。

    c_rehash

    verifyコマンドを呼び出す前に、ヘルプページ:man verify

    rehashはディレクトリをスキャンし、各" .pem "、"。crt"、" .cer "、または" .crl "ファイル指定されたディレクトリリストと各ファイルのシンボリックリンクを作成します

    export CERTS=/Users/{path_to_your_certs} [path to openssl]/openssl/bin/c_rehash ${CERTS} 

    リーフ証明書を確認する

    openssl verify -CApath ${CERTS} local_leaf.pem local_leaf.pem: OK 

    ディレクトリ

    。再ハッシュ手順を実行しなかった場合、エラー20 unable to get local issuer certificateが発生します。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です