簡體   English   中英

SSLStream在服務器身份驗證上設置受信任的證書頒發機構

[英]SSLStream set trusted certificate authorities on server authentication

我正在嘗試對有證書交換的客戶進行身份驗證。 我遇到的問題是,openssl客戶端拒絕連接嘗試,因為身份驗證握手中沒有證書頒發機構。

對於在Windows Server 2008 R2上運行的實例,這似乎工作正常,但在我的兩個開發環境(Windows 10和Windows 7)中,它均失敗。 我已經查看並嘗試更改一些Windows設置(主要是本地組策略),這些設置可能會禁止添加證書頒發機構,但無法使其正常工作。

那是LocalCertificateSelectionCallback的字符串數組的函數acceptIssuers字段嗎?

我還找到了另一個相關的stackoverflow php解決方案 ,但不知道如何將其應用於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);

任何幫助將不勝感激-謝謝!

好吧,我不知道為什么它沒有更快出現。 HKEY_LOCAL_MACHINE \\ System \\ CurrentControlSet \\ Control \\ SecurityProviders \\ SCHANNEL上有一個名為SendTrustedIssuerList的注冊表項,該注冊表項設置為0,將其更改為1可解決此問題。 在Windows Server實例上,此標志可能默認情況下設置為1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM