Windows では、TLS サーバー証明書 (証明書ストアにある) には、CSP キーストアまたは CNG キーストアにある秘密鍵 (PK) が付属しています。PK の最終的な場所は、証明書をインポートするとき (つまり、最近の Windows バージョンの場合) に指定できます。たとえば、-sp
(サブジェクトのプロバイダー) パラメーターを に使用しmakecert
ます。
プロバイダーが指定されていない場合、デフォルトはフレンドリーではありません。PK は最終的に CNG KSP になり、WCF では使用できなくなります。
Microsoftは、「. NET Framework 4.6.1 以前のバージョンは、CNG/KSP 証明書を処理するために従来の CryptoAPI を使用しているため、これらの証明書をサポートしていません。.NET Framework 4.6.1 以前のバージョンでこれらの証明書を使用すると、例外が発生します。 . "
ただし、接続のサーバー側にインストールされた .NET Framework 4.6.1 と .NET Framework 4.6.2 の間でまったく同じ動作が見られます。何が起こるかというと、サーバーは (独自のログによると) 指定されたポートで問題なくリッスンしているように見えますが、ポートは開いていません ( によるnetstat -a
)。Invalid provider type specified
サーバーがポートを開こうとしている間、Windows イベント ログに言及があります。
それが重要な場合は、サーバーと実際のポートの間に net.tcp ポート共有があります。
CNG KSP でサーバー証明書を使用して (WCF を使用して) .NET の任意のバージョンを正常に実行している人はいますか? 上記のマイクロソフトのドキュメントは単に間違っていますか?