Jas*_*son 12 .net c# ssl ssl-certificate
我正在尝试在C#应用程序中使用HttpListener类来让迷你Web服务器通过SSL提供内容.为此,我需要使用httpcfg工具.我有一个带有公钥和私钥对的.pfx文件.如果我使用mmc手动将此密钥对导入本地机器商店,一切正常.但是,如果我使用X509Store类以编程方式导入此密钥对,则无法连接到我的迷你网络服务器.请注意,在这两种方法中,证书都会导入到LocalMachine中的MY商店.奇怪的是,一旦我以编程方式导入它,我就可以在mmc中查看证书,当我查看它时,UI表明私钥也可用于此证书.
深入挖掘,我注意到当我手动导入密钥对时,我可以看到一个新文件出现C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys,但是当我以编程方式导入时,不会出现一个.在相关的说明中,当我删除手动导入的证书时,它不会从前面提到的目录中删除相应的私钥文件.
最后,我的问题是:当我以编程方式将证书添加到商店时,存储的私钥在哪里以及为什么HttpListener类(HttpApi)无法访问它?
请注意,这个问题略有关联,但我不认为权限是问题,因为这一切都是作为同一个Windows用户完成的: 如何从.NET设置X.509证书的私钥文件的读取权限
Jas*_*son 29
好的,我明白了.它与证书对象的密钥存储参数有关.对于遇到此问题的任何其他人,请确保X509Certificate2使用X509KeyStorageFlags.PersistKeySet和X509KeyStorageFlags.MachineKeySet标志构建要添加到商店的对象.这将强制私钥持久保存在HttpApi(HttpListener包装)所需的机器密钥集位置.
| 归档时间: |
|
| 查看次数: |
12154 次 |
| 最近记录: |