我已经使用makecert生成的基本自签名证书(使用许多关于这个主题的在线教程)运行了我的WCF we服务,但发现在生成makecert似乎无法处理的证书时,我们需要某些功能。因此,我试图使用OpenSSL创建我的证书,用我们自己的CA (也是用OpenSSL生成的)对它们进行签名。我似乎正在创建和注册证书,但当我试图查询该get服务时,我得到以下信息:
证书“证书详细信息”必须有一个私钥。进程必须具有私钥的访问权限.
尽管我可能会尝试,但我似乎无法让系统识别出我认为的私钥(也许我完全错了,我应该看另一个文件。)有人能给我一些关于我哪里出错的明智的建议吗?
我正在生成这样的证书:
# 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“(在本例中,服务器和客户端都运行在本地主机上),但是MyCompany.key (我假设它是私钥,是吗?)不会导入,总是引用未知的文件格式。注册是通过"mmc“实用程序与证书卡。
然后,在我的客户端和服务器的Web.Config文件中,我用我的新证书的名称交换了以前的证书名:
<!-- Client Web.config -->
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="PeerOrChainTrust"/>
</serviceCertificate>
<clientCertificate findValue="MyCompany" storeLocation="CurrentUser" storeName="TrustedPeople" x509FindType="FindBySubjectName" />
</clientCredentials>
<!-- Server Web.config -->
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerOrChainTrust"/>
</clientCertificate>
<serviceCertificate findValue="MyCompany" storeLocation="CurrentUser" storeName="TrustedPeople" x509FindType="FindBySubjectName" />
</serviceCredentials>
当然,这会产生前面列出的错误。我知道它正在查找证书,因为它在错误中显示的细节都是正确的,但我显然遗漏了一些东西。那么,要让WCF使用我的OpenSSL证书,我还需要做什么呢?
如果我的问题看上去很明显,或者我遗漏了一些关键的信息,我很抱歉,但是我对证书/SSL领域相当陌生,而且我已经在黑暗中摸索了很多东西。我会非常感激任何能启发我的人!
发布于 2009-10-14 00:45:17
Windows不理解OpenSSL的PEM密钥格式。生成密钥对后,需要将它们插入PKCS12 (.pfx)格式,以便能够导入整个密钥对。类似于:
openssl pkcs12 -export -in yourcert.cer -inkey yourkey.pem -out output.pfx
然后像以前一样使用证书卡导入.pfx。应该提示您输入您在导出过程中提供的密钥密码,然后当您查看证书时应该会看到这个小密钥图标,该证书显示“您有一个与此证书相对应的私钥”。
https://stackoverflow.com/questions/1562604
复制相似问题