TCPサーバー上のSslStreamがRemoteCertificateNotAvailableでクライアント証明書を検証できない

StackOverflow https://stackoverflow.com/questions/617109

質問

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

SSLStreamを備えたTCPサーバーと、相手側のTCPクライアントを開発しました。

サーバーを認証するには:

sslStream.BeginAuthenticateAsServer 

次のものでクライアントを認証します。

sslStream.BeginAuthenticateAsClient

クライアント証明書を Trusted Publishers-Local Machine からロードしています。

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

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

役に立ちましたか?

解決

リンクは通過しませんでしたが、この文で見つけることができる問題があります:

"信頼できる発行元からクライアント証明書をロードしました"

クライアント証明書は通常、ユーザーアカウントの個人ストアに存在します。サーバー証明書でも同じです(ただし、「クライアント認証」と「サーバー認証」のように、おそらくそれらには異なる目的OIDが関連付けられています)。信頼できる発行元ストアで利用可能な秘密キー付きの証明書を持っているのは奇妙だと思います。

CertMgr.mscでクライアント証明書またはサーバー証明書をダブルクリックすると、「この証明書には秘密キーがあります」というメッセージが表示されます。下部に向かってメッセージ。

持っていない場合、キーペアの半分しかありません-暗号化と認証には秘密キーが必要です。サーバー証明書にはサーバー側に秘密鍵が必要であり、クライアント証明書にはクライアント側に秘密鍵が必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top