如何在不导入的情况下创建与SslStream AuthenticateAsServer一起使用的证书

Nik*_*cke 11 c# ssl x509certificate

我迷失在迷宫般的证书和私钥中.

我正在用C#编写服务器.我希望它接受SSL连接.出于测试目的,我想为"localhost"生成证书,并将该证书用于服务器.理想情况下,我不想污染我的证书存储区,因此我只想要一个C#代码可以加载以提供证书的磁盘上的文件或文件.

我尝试的所有内容(使用网络搜索建议的菜谱方法)或者给我"提供给包的凭据无法识别"或"服务器模式SSL必须使用带有相关私钥的证书".

有没有办法生成证书和私钥,然后将它们加载到X509Certificate对象而不将它们加载到我的机器证书存储中?

Nik*_*cke 16

最后,我运行以下命令来创建server.pfx文件:

makecert.exe -r -pe -n "CN=localhost" -sky exchange -sv server.pvk server.cer
pvk2pfx -pvk server.pvk -spc server.cer -pfx server.pfx
Run Code Online (Sandbox Code Playgroud)

然后我用代码加载它:

certificate = new X509Certificate2("server.pfx", "password");
Run Code Online (Sandbox Code Playgroud)

(我实际上并没有硬代码密码:-)

诀窍是要知道我需要一个pfx文件,并且我需要使用X509Certificate2类而不是X509Certificate来加载它.


ac9*_*989 7

Niki Loche方法有效.

如果你得到了The specified network password is not correct.,那么你应该在C#中没有密码的情况下尝试.输入密码是什么并不重要makecert.

certificate = new X509Certificate2("Server.pfx", "");
Run Code Online (Sandbox Code Playgroud)

但是如果你想使用密码(有一个原因,那就是:)),尝试将pvk2pfx.exe命令更改为:

pvk2pfx.exe"-pi password -pvk Server.pvk -spc Server.cer -pfx Server.pfx

并在C#中输入:

certificate = new X509Certificate2("Server.pfx","password");

密码必须与创建cer文件时的密码相同.

这对我有用.我希望它能帮助别人.