web-dev-qa-db-ja.com

stunnelがすべての中間CA証明書を確実に送信するようにするにはどうすればよいですか?

ほとんどではありませんが、数台のコンピューターが私のWebサーバーからのSSL証明書を拒否しています。問題は、一部のコンピューターがCA証明書を拒否していることです。問題が完全に更新されていない場合、Mac OS X 10.6で問題が発生しているようです。

http://www.sslshopper.com/index.php?q=ssl-checker.html#hostname=beta.asana.com によると、問題はありません。

http://certlogik.com/sslchecker/ によると、送信される中間証明書はありません。

私の証明書はStarfield Technologiesからのものであり、ここからsf_bundle.crtを使用しています:certs.godaddy.com/anonymous/repository.seam

次のstunnel.confを使用して、サーバーでSSLをstunnel経由で処理しています:

cert = $CODEZ/admin/production/proxy/asana.pem
CAfile = $CODEZ/admin/production/proxy/sf_bundle.crt
pid =
client = no

[<forwarded port>]
accept = 443
connect = 8443

私が間違っている可能性があるアイデアはありますか?

13
Jack Stahl

CAFileオプションは、クライアント認証証明書に使用するCAを構成します。これはあなたが望むものではありません。

代わりに、certオプションでファイルを作成し、該当する証明書チェーン全体を含める必要があります。そのファイルのバックアップコピーを保存してから、新しいファイルを作成する必要があります。基本的に、次のようなフォーマットの2つのファイルを結合します。

-----BEGIN CERTIFICATE-----
(certificate from asana.pem file pasted here)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(intermediate certificate here; copy-paste the top chunk from the bundle)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(root certificate here; copy-paste the bottom chunk from the bundle)
-----END CERTIFICATE-----

これにより、stunnelは完全な証明書チェーンをクライアントに提示します。

さらに一口。 openssl s_clientコマンドは、証明書チェーンの問題をテストし、サービスが証明書をどのように提示しているかを確認するのに非常に役立ちます。

編集:わかりました。この証明書バンドルのチェーンは3深さですが、信頼チェーンは2深さです。何かがおかしい。

最上位の証明書(「Starfield Secure Certification Authority」)は、「Starfield Class 2 Certification Authority」という名前の発行者によってad7e1c28 ..で始まる拇印で署名されていますが、バンドルの2番目の証明書は、最初の証明書の署名者(これはである必要がありますまったく同じ証明書であり、サムプリントは363e4734で始まり、有効期限は10年前です。次に、3番目(ルート)の証明書は、含まれている中間証明書の署名者です。

それが意味をなさない場合でも、心配しないでください。概要:だらしのない作業、誰かが真剣にボールを落とし、この証明書バンドルを作成しました。あなたの最善の策は、チェーンを正常に検証しているブラウザからbase-64形式でファイルをエクスポートし、そこからリストした形式に貼り付けることです。

それはあなた自身のせいではなく混乱する混乱なので、私はあなたのDNS名を推測して証明書を取得しました、そしてこれはあなたが必要とする完全なチェーンであるべきだと思います: http://Pastebin.com/Lnr3WHc8

17
Shane Madden

この問題に直面している他の誰にとっても、私はCAFileを含める必要がありましたが、Shaneの投稿がうまくいきました。また、チェーンを作成するときは、ファイル名の指示に従ってください この記事

使用するファイル名を決定するには、OpenSSLに付属しているc_hashプログラム(/usr/local/ssl/miscディレクトリ内)を使用できます。

c_hash some_certificate.pem
a4644b49.0 => some_certificate.pem

したがって、上記の場合、ファイルの名前をa4644b49.0に変更します。
(ファイル名のドットの後のゼロであり、文字「O」ではないことに注意してください。)

c_hashプログラムがない場合は、適切なOpenSSLコマンドを実行してハッシュ値を決定できます。

openssl x509 -hash -noout -in some_certificate.pem
a4644b49

そして、この問題に直面している場合は、bcでAndroid cordovaを使用してwebsocketを使用しようとしています。*にはhttpとhttpsのみが含まれるため、必ず手動でwssをcordova-whitelistに追加してください。 。

1
BrightEyed

Qualys SSLLabsは、変更後に構成を確認するのに非常に便利です。

https://www.ssllabs.com/ssldb/analyze.html

あなたが持っていることを確認します

  • 強力な暗号が有効になっています
  • 弱い暗号が無効になっています
  • 証明書チェーンが完了し、正しい順序で
1
Ben Walding