我已经使用makecert生成的基本自签名证书(使用关于该主题的许多在线教程中的一些)运行我的WCF Web服务,但发现在生成makecert似乎无法处理的证书时我们需要某些功能.因此,我正在尝试使用OpenSSL创建我的证书,使用我们自己的CA(也使用OpenSSL生成)对其进行签名.我似乎正在创建和注册证书,但当我尝试查询Web服务时,我得到以下内容:
证书'[Cert Details]'必须有私钥.该进程必须具有私钥的访问权限.
尽管我可能尝试,我似乎无法让系统识别出我认为的私钥(也许我完全错了,我应该完全看看另一个文件......)任何人都可以提供一些sage建议到哪里我可能会出错?
我正在生成这样的证书:
# Generate key and certificate request openssl req -new -newkey rsa:1024 -nodes -keyout MyCompany.key -out MyCompany.csr # Generate certificate from certificate request openssl ca -batch -in MyCompany.csr -out MyCompany.cert
然后,我可以使用机器证书存储区注册"Mycompany.cert"(在这种情况下,服务器和客户机都在localhost上运行),但MyCompany.key(我假设是私钥,是吗?)将不会导入,总是引用一种未知的文件格式.通过带有证书管理单元的"mmc"实用程序进行注册.
在我的客户端和服务器的Web.Config文件中,然后将以前(工作)的证书名称换成我的新证书的名称:
当然,这会产生我之前列出的错误.我知道它正在找到证书,因为它在错误中显示的细节都是正确的,但我显然遗漏了一些东西.那么我还需要做些什么来让WCF使用我的OpenSSL证书?
如果我的问题看起来很明显,或者我遗漏了一些关键信息,我很抱歉,但我对证书/ SSL场景很新,而且我已经拥有的很多东西都是我在黑暗中摸索的.我非常感谢能够启发我的人!
Windows不了解OpenSSL的PEM密钥格式.生成密钥对后,您需要将它们塞入PKCS12(.pfx)格式,以便能够导入整个密钥对.就像是:
openssl pkcs12 -export -in yourcert.cer -inkey yourkey.pem -out output.pfx
然后像以前一样使用"证书"管理单元导入.pfx.系统将提示您输入导出期间提供的密钥密码,然后在查看"您拥有与此证书对应的私钥"的证书时,应该会看到小钥匙图标.