3

この質問はすべてSslPolicyError.RemoteCertificateNotAvailableエラーの解決に関するものです。

もう一方の端にSSLStreamとTCPクライアントを備えたTCPサーバーを開発しました。

サーバーを次のように認証します。

sslStream.BeginAuthenticateAsServer 

クライアントを次のように認証します。

sslStream.BeginAuthenticateAsClient

からクライアント証明書を読み込んでいますTrusted Publishers - Local Machine

両方とも同じマシンで実行されています。

信頼できる発行元ストアではなく、.cerファイルと.pfxファイルからクライアント証明書をロードしてみました。ただし、サーバーのクライアント(リモート)証明書バリデーターのコールバックSslPolicyErrorsは、RemoteCertificateNotAvailableエラーがあることを検出して失敗します。

4

1 に答える 1

4

リンクは届きませんでしたが、「信頼できる発行元からクライアント証明書をロードしました」というステートメントで見つけることができる問題があります。

クライアント証明書(つまり、拡張キー使用法フィールドにクライアント認証を含む証明書)は、通常、ユーザーアカウントのパーソナルストアに存在します。証明書からエンティティになるには、証明書の秘密鍵が常に必要です。

サーバー証明書と同じです(ただし、異なる目的のOIDが関連付けられています-サーバー認証)。TrustedPublishersストアで秘密鍵を使用した証明書を入手できるのは奇妙だと思います。

CertMgr.mscでクライアントまたはサーバーの証明書をダブルクリックすると、この証明書の下部に秘密鍵タイプのメッセージが表示されます。

そうでない場合は、キーペアの半分しかありません。署名と認証には秘密キーが必要です。(サーバー証明書にはサーバー側に秘密鍵が必要であり、クライアント証明書にはクライアント側に秘密鍵が必要です。)

于 2009-03-05T23:21:01.250 に答える