特定のSSL証明書の下でWindowのSSL Cipher-Suiteが制限されるのはなぜですか?


14

問題:Windows Server 2008 R2は、サーバーで特定の証明書を使用する場合、次のSSL暗号スイートのみをサポートします。

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

XP Cryptographic APIはデフォルトではAES暗号をサポートしないため、これによりXPクライアントはサーバーに接続できなくなります。
その結果、Internet Explorerまたはリモートデスクトップを使用して接続しようとすると、サーバーログに次のエラーが表示されます。(MicrosoftのCAPIを使用しているため)

Schannelエラー36874「リモートクライアントアプリケーションからTLS 1.0接続を受信しましたが、クライアントでサポートされている暗号スイートの一部がサーバーでサポートされています。SSL接続要求は失敗しました。」
Schannelエラー36888「次の致命的なアラートが生成されました:40。内部エラー状態は1204です」


2
ゲイリー、あなたがあなた自身の質問を解決した場合、回答済みとしてマークしてください。
バーニーホワイト

回答:


14

サーバーで使用されている証明書が証明書要求フォームのレガシーキーオプションを使用して生成された場合、その証明書の秘密キーはMicrosoftのレガシーCryptographic APIフレームワークに保存されます。Webサーバーが新しい暗号化次世代(CNG)フレームワークを使用してリクエストを処理しようとすると、レガシーフレームワークに保存されているRSA秘密キーに関連する何かが新しいフレームワークで利用できないように見えます。その結果、RSA暗号スイートの使用は厳しく制限されています。

解決策:
カスタム証明書要求ウィザードのCNGキーテンプレートを使用して、証明書要求を生成します。

MMC | ローカルコンピューター証明書マネージャー| 個人証明書フォルダ| (右クリック)| すべてのタスク->高度な操作| カスタムリクエストの作成| 「登録ポリシーなしで続行する」| 「(テンプレートなし)CNGキー」を選択します | 必要に応じて証明書要求を完了してください。

キーが正しい場所にあることを確認する:
http : //msdn.microsoft.com/en-us/library/bb204778(VS.85).aspx
http://www.jensign.com/KeyPal/index.html

正しい暗号スイートを検証するためのツール:
http : //pentestit.com/2010/05/16/ssltls-audit-audit-web-servers-ssl-ciphers/
https://www.ssllabs.com/

SSL暗号スイートの設定:
http : //support.microsoft.com/kb/245030
http://blogs.technet.com/b/steriley/archive/2007/11/06/changing-the-ssl-cipher-order -in-internet-explorer-7-on-windows-vista.aspx

これを理解するのに1週間かかりました。これが誰かに同じトラブルを救うことを願っています。


自己署名証明書の場合、誰でもこれを行う方法を知っている-またはそうでなければ問題を解決する-
MGOwen

ジェリー、あなたの仕事と結果を共有してくれてありがとう!Microsoftサポートケースを開きましたが、Microsoft自体は特定のクライアントが接続できなかった理由を見つけることができませんでした。あなたが説明したとおりに問題が発生しました。しかし、technet.microsoft.com / en-us / library / ff625722(v = ws.10).aspxによれば、Microsoft自体は、レガシーキーテンプレートを使用して最高の互換性をアーカイブすることを推奨しています。すごい仕事!

2

まったく同じ問題を自分で手に入れ、この投稿で時間を大幅に節約できたので、みんなありがとう!

ゲイリーのソリューションはスポットライトですが、PFXをPEMに変換し、opensslを使用して再びPFXに戻すことで問題を解決できました。新しいPFXはIISに証明書をインポートしましたが、欠落している暗号を見ることができる点が異なります。

こうやって:

openssl pkcs12 -in mycert.pfx -out mycert.cer -nodes

次に、cerファイルをキー、証明書、中間証明書の3つに分割します

openssl pkcs12 -export -out mycert-new.pfx -inkey mycert.key \
-in mycert.crt -certfile mycert-intermediate.crt

次に、新しい.pfxファイルをIISにインポートすると、予想されるすべての暗号が使用されます。

したがって、証明書を再発行する必要はありません。


これは、元の質問と似ていますが、元の質問とは逆の状況で私にとってうまくいきました:Windows Server 2012 R2のAD FSロールでは、証明書リクエストにレガシーAPIを使用する必要がありますが、2つのAES暗号のみが表示されます上に示しました!エクスポート、OpenSSLを使用したキーの再パッケージ、および再インポートにより同じ問題が解決します。他のプロトコルが突然機能し始めます。ありがとう、@ gelilloadbad!
-ewall

0

おかげで、あなたの投稿は私を助けてくれましたが、私の問題はまったく同じではありませんでした。

しかし、原因は、私の側でのWINHTTP SERVER APIの設定ミスでした。私のIPが変更され、新しいサーバー証明書をマシン「MY」に入れたときに、HttpSetServiceConfigurationのALREADY_EXISTS戻りコードを無視しました。

そのため、間違った共通名を持ち、新しいサーバー名と一致しない以前のサーバーTLS証明書を使用しました。

HttpDeleteServiceConfiguration()またはコマンドライン「netsh http delete sslcert 0.0.0.0:8443」を正しく実行しないと、次の症状を伴う厄介なエラーが発生します。

1)TLSでは、クライアントHelloは、AckおよびResetフラグビットが設定されたサーバーからのTCPパケットとすぐに一致します。(ハンドシェイク失敗アラート、私は思う?)

2)イベントビューアに「次の致命的なアラートが生成されました:40。内部エラー状態は107です。」

「リモートクライアントアプリケーションからSSL 3.0接続要求を受信しましたが、クライアントアプリケーションでサポートされている暗号スイートがサーバーでサポートされていません。SSL接続要求は失敗しました。」

したがって、暗号スイートの不一致を追跡する前に、使用するサーバー証明書を実際に使用していることを確認してください。

         netsh http show sslcert

ハッシュ値を確認してください!


この答えは非常に明確ではなく、あまり意味がありません。「なぜ特定のSSL証明書の下でWindowのSSL Cipher-Suiteが制限されるのですか?」Schannelエラーの説明をフォローアップします。
バーニーホワイト

0

これはKeySpec = 2-AT_SIGNATUREの問題である可能性があります

certutil -verifystore -v KeySpec値を検証するための「証明書のumb印」。2の場合、証明書をPFXファイルとしてエクスポートしてから、certutil -importpfx AT_KEYEXCHANGEを実行して修正する必要があります。


それも私の場合の問題でした。実際、この答えは、実際に原因を指摘しようとする唯一の答えです。ただし、答えは、AT_SIGNATUREが非ECDHE暗号スイートには不十分である理由の説明から利益を得ます。そのようなスイートでは、RSAは認証(署名)だけでなく、鍵交換にも使用されるためです。
ヤクブBerezanski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.