0

C#.NET Win-Forms で SSL クライアントを作成しました。証明書 (公開鍵) をシステム ルート ストアに追加し (.NET コードまたは Internet Explorer を介して手動でどちらも機能します)、Windows XP では正常に機能しますが、Windows 7 ではAuthenticateAsClient()を試行すると次のようなAuthenticationExceptionが発生します: "クライアントとサーバーは共通のアルゴリズムを持っていないため、通信できません

Microsoft のサポート ドキュメントでは、いくつかのレジストリ キーを一覧表示し、Windows 7 でデフォルトで有効 (新しい強力なもの) または無効 (古い古いもの) になっているプロトコル / 暗号 / アルゴリズムについて説明しているため、レジストリを編集して有効/無効にすることができます。これらのリンクは次のとおりです。

Schannel.dll で特定の暗号化アルゴリズムとプロトコルの使用を制限する方法 TLS/SSL 暗号化の機能強化

暗号化が苦手な限り、どのレジストリ キーが自分のケースに一致するかわかりません。クライアントとして使用している X509Certificate オブジェクトのプロパティは次のとおりです。

SignatureAlgorithm.FriendlyName: " sha1RSA "
バージョン: 3

誰か助けてくれませんか?

4

2 に答える 2

0

Windows のレジストリ キーと値に苦労した後 (機能しましたが、他の項目を無効にするなど、非論理的でした!)、レジストリを変更せずに Windows Cipher Suite Orderを有効にして編集することで問題を解決しました。

指示:

1 -スタート >ファイル名を指定して実行... にgpedit.mscを入力します。ローカル グループ ポリシー エディターが開きます。2 - [コンピューターの構成] > [管理用テンプレート] > [ネットワーク] > [SSL 構成設定]に移動します。3 -右側のSSL Cipher Suite Order項目を ダブルクリックします。 4 - 開いたウィンドウで [有効にする] ラジオ ボタンを選択ます。左中央には、カンマ区切りのテキストを含むテキスト ボックスがあります。空のメモ帳ウィンドウにテキストをコピーして貼り付けます。 5 - 最初にしたい項目を移動します (私の場合: TLS_RSA_WITH_RC4_128_SHAおよびSSL_CK_RC4_128_WITH_MD5 ) 6 - 古いテキストを新しいテキストに置き換えます。




7 - レジストリとは異なり、変更を有効にするには今すぐコンピュータを再起動する必要があります。

それが役に立てば幸い。

于 2013-10-19T06:03:53.140 に答える
0

サーバーは、AES 暗号を使用して SSLv3.0 接続をネゴシエートしようとした可能性があります。その組み合わせは技術的に違法です。http://blogs.msdn.com/b/ieinternals/archive/2009/12/08/aes-is-not-a-valid-cipher-for-sslv3.aspx?Redirected=trueを参照してください。

于 2014-04-01T16:06:48.110 に答える