Tag: makecert

如何在c#中通过客户端识别服务器身份validation的服务器名称

我最近一直在尝试用C#创建一个SSL加密的服务器/客户端。 我在MSDN上遵循了本教程,但是,它需要使用makecert.exe为服务器和客户端使用创建证书,所以我找到了一个示例并且它创建了证书: makecert -sr LocalMachine -ss My -n“CN = Test”-sky exchange -sk 123456 c:/Test.cer 但现在问题是服务器启动并等待客户端,当客户端连接它时使用机器名称 ,在这种情况下,我可以收集的是我的IP: 127.0.0.1 ,然后它需要服务器名称 ,该名称必须与证书( Test.cer )上的服务器名称匹配。 我尝试了多种组合(例如“Test”“LocalMachine”,“127.0.0.1”但似乎无法让客户端给出服务器名称以匹配,从而允许连接。我得到的错误是: 证书错误:RemoteCertificateNameMismatch,RemoteCertificateChainErrors例外:根据validation程序,远程证书无效 这里是我使用它的代码与MSDN示例的不同之处仅在于我在应用程序中为服务器分配证书路径以及客户端的机器名和服务器名称: SslTcpServer.cs using System; using System.Collections; using System.Net; using System.Net.Sockets; using System.Net.Security; using System.Security.Authentication; using System.Text; using System.Security.Cryptography.X509Certificates; using System.IO; namespace Examples.System.Net { public sealed class SslTcpServer { static X509Certificate serverCertificate = […]

如何在processStartInfo中传递多个参数?

我想从c#代码运行一些cmd命令。 我跟着一些博客和教程得到了答案,但我有点困惑,即我应该如何传递多个参数? 我使用以下代码: System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; startInfo.FileName = “cmd.exe”; startInfo.Arguments = … 以下命令行代码的startInfo.Arguments值是什么? makecert -sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer netsh http add sslcert ipport=127.0.0.1:8085 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable