我必须为点对点通信而不是本地主机进行相互 SSL 身份验证。我正在使用 Microsoft.Net 套接字通信类以及具有 ValidateServerCertificate 和 ValidateClientCertificate 回调的 SslStream 类来执行此操作。
为此,我创建了自签名证书,其中包括一个根证书、一个服务器证书和一个客户端证书。下面是我用于生成相同证书的命令。
根 ->makecert.exe -n "CN=abc.com"-r -pe -a sha512 -len 4096 -cy authority -sv RootCert.pvk RootCert.cer ->pvk2pfx -pvk RootCert.pvk -spc RootCert.cer -pfx RootCert.pfx -po test123
服务器 ->makecert.exe -pe -n "CN=abc.com"-a sha512 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -ic RootCert.cer -iv RootCert.pvk -sp "Microsoft RSA SChannel Cryptographic提供商”-sy 12 -sv ServerCert.pvk ServerCert.cer ->pvk2pfx -pvk ServerCert.pvk -spc ServerCert.cer -pfx ServerCert.pfx -po test123
客户端 ->makecert.exe -pe -n "CN=abc.com"-a sha512 -sky exchange -eku 1.3.6.1.5.5.7.3.2 -ic RootCert.cer -iv RootCert.pvk -sp "Microsoft RSA SChannel Cryptographic提供商”-sy 12 -sv ClientCert.pvk ClientCert.cer ->pvk2pfx -pvk ClientCert.pvk -spc ClientCert.cer -pfx ClientCert.pfx -po test123
生成所有必需的证书后,我将它们添加到 mmc 控制台,正如您在上面所解释的那样。 为了检查相互身份验证,我正在使用 X509Certificate2 类,在 SslPolicyErrors 中执行此操作时,我遇到了错误说明 RemoteCertificate Name Mismatch
我知道这是一个远景,但任何人都可以给我任何相同的指示。
最佳答案
大家好,如果您仍然遇到与我发布的问题相同的问题,请点击以下链接。 我们的团队致力于此,我们找到了以下解决方案,希望对您有所帮助。
关于c# - .Net 中使用套接字通信的点对点相互 SSL 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26522667/