我已经在网站上挖掘了3天,并找到了很多本地导入的解决方案,但远程导入X509Certificate2对象却没有这个问题。
使用以下代码,我可以获取要导入的.pfx文件并说它有一个私钥,但它不会将其标记为可导出。
var cert = new X509Certificate2(certPath,
certPwd,
X509KeyStorageFlags.MachineKeySet |
X509KeyStorageFlags.PersistKeySet |
X509KeyStorageFlags.Exportable);
var certStore = new X509Store($@"\\{server}\My", StoreLocation.LocalMachine);
certStore.Open(OpenFlags.ReadWrite);
certStore.Add(cert);
certStore.Close();
它连接到远程服务器,它会安装证书,但由于它不可导出,我们无法在IIS中绑定证书。
我也尝试过使用X509Chain和X509Collection,但这些会再次导入证书,但不能导出。
我在这里对着桌子打我的头。任何人都可以给我一些指示吗?
服务器都是Win2k8或更高版本(大多数是2012年)。
---编辑如下--- 一些额外的澄清。
我创建了一个Rest API,尝试在远程服务器上实际安装证书。
应用程序池标识位于我尝试安装证书的服务器上的管理员组中。
我今天使用Win32API编写了一个工具来进行安装并且工具正常工作。当我将代码添加到Rest API时,证书仍然无法绑定到IIS https站点。
我倾向于这是一个用户上下文问题。
---结束编辑---
谢谢! -Ed