我正在开发一个工具(ASP.NET页面生成一个带有私钥的文件,以便稍后在其他应用程序上进行验证。
我正在使用makecert创建证书:
makecert -sky "privatekey" -sk "MyCompany"-n "CN=MyCompany" -ss -pe CertFile.cert
生成的证书在我的开发机器上。然后我运行这个代码,它可以找到没有问题:
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
X509Certificate2Collection certs;
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName, "MyCompany", false);
certs变量不包含证书(在测试环境中)
我使用双击并安装证书,使用mmc和导入证书,从我的计算机导出证书,然后在测试服务器中导入,在测试服务器(Win 2003)上安装了证书。
我缺少一步吗?
更新:
我认为这可能是问题所在。 ASPNET用户没有访问证书的权限,机器上也没有安装证书,只是本地用户使用。
我正在寻找此链接:http://geekswithblogs.net/lorint/archive/2005/12/30/64516.aspx
由于
答案 0 :(得分:2)
命令行稍微不正确......您需要在'-ss'参数后指定存储“my”:
makecert -sky "privatekey" -sk "MyCompany" -n "CN=MyCompany" -ss "my" -pe CertFile.cert
在更改之后,我可以使用MMC证书管理单元找到证书。