我正在嘗試驗證有證書交換的客戶端。我遇到的問題是openssl客戶端拒絕連接嘗試,因爲身份驗證握手中不包含任何證書頒發機構。SSLStream在服務器身份驗證上設置可信證書頒發機構
這似乎對在Windows Server 2008 R2上運行的實例正常工作,但在我的兩個開發環境(Windows 10和Windows 7)中都失敗了。我看過並試圖更改幾個窗口設置(主要是本地組策略),這可能會阻止添加證書頒發機構,但無法正常工作。
是LocalCertificateSelectionCallback的字符串數組acceptableIssuers字段的函數嗎?
我還發現另一個stackoverflow php solution是相關的,但不知道如何將它應用到sslstream類。
我的代碼看起來像這樣
var _nwStream = new SslStream(client.GetStream(), true,
(sender, certificate, chain, sslPolicyErrors) =>
{
bool policyErrs = (sslPolicyErrors & (SslPolicyErrors.RemoteCertificateChainErrors | SslPolicyErrors.RemoteCertificateNotAvailable)) != 0;
if (policyErrs)
{
string message = string.Format("Remote Certificate failed for client: {0}, SSL policy errors {1}", client.Client.RemoteEndPoint, sslPolicyErrors);
return !policyErrs;
},
(sender, targetHost, localCertificates, remoteCertificate, acceptableIssuers) =>
{
acceptableIssuers = new string[] { _cert.Issuer };
return _cert;
});
_nwStream.AuthenticateAsServer(_cert, true, System.Security.Authentication.SslProtocols.Tls, true);
任何幫助將是很大的appreciated-謝謝!