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


13

ほとんどではないが、少数のコンピューターが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/によると、送信される中間証明書はありません。

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

私は次のようにstunnel経由でサーバー上のSSLを処理していますstunnel.conf

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

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

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

回答:


17

この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は完全な証明書チェーンをクライアントに提示します。

さらにもう1つ。このopenssl s_clientコマンドは、証明書チェーンの問題をテストし、サービスが証明書を提示する方法を確認するのに非常に役立ちます。

編集: わかりました。その証明書バンドルのチェーンは3階層ですが、トラストチェーンは2階層に見えます。何かがおかしい。

最上位の証明書(「スターフィールドセキュア認証局」)は、「。スターフィールドクラス2認証局」という名前の発行者によって署名され、ad7e1c28..で始まるthumb印で署名されます証明書はまったく同じで、thumb印はで始まり、有効期限は10年前でなければなりませ363e4734。次に、3番目の(ルート)証明書は、含まれる中間証明書の署名者です。しかし、これら2つの証明書は、最初の証明書とは関係がありません。

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

それはあなた自身の過失による混乱混乱ですので、私はあなたのDNS名で推測を取り、証明書をつかんで、私は、これはあなたが必要とする完全な連鎖されるべきだと思う。http://pastebin.com/Lnr3WHc8


これは非常に便利でした!担当者がいないため、私は投票できませんが、私はそうします:
ジャック・スター

@Jack問題が解決した場合、低い担当者であっても答えを受け入れることができます。投稿を編集して、提供した証明書バンドルが台無しになっていることを明確にしました。
シェーンマッデン


1

この問題に直面している他の人のために、シェーンの投稿はトリックをしましたが、CAFileも含める必要がありました。また、チェーンを作成するときは、この記事に従ってファイルの命名手順に従ってください。

使用するファイル名を決定するには、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

そして、この問題に直面している場合、Android CordovaでWebSocketを使用しようとしています。*には、httpとhttpsのみが含まれているため、必ずCordovaホワイトリストに手動でwssを追加してください。


リンクする記事の上部に大きな赤いバナーがあり、「このページは減価しました」と表示されています。この情報は、サポートされているように、またはこの時点で書き込み?
オースティン

2
少なくとも、引用された部分については肯定的です。証明書チェーンにファイルのハッシュとして名前を付けない限り、stunnelはぐらつきをチャックします。
BrightEyed

また、.0を追加する必要はありませんでした。綴りを修正してくれたおかげで、夜遅くまで投稿を締めくくった; D
BrightEyed

素晴らしい、検証を聞いてうれしい。私は理解している、私は今、私の3番目の長い日に続けています。(11、その後14時間、今日はさらに14時間になる可能性があります。)
オースティン

1
Eeesh、ITの夢を生きる:D
BrightEyed
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.