在过去的三个小时里,我一直在努力创造一个.pfx
文件使用OpenSSL
.我一直在关注此文档,并按照Get a certificate using OpenSSL
标题下的说明进行操作.
我在这里的步骤:openssl pkcs12 -export -out myserver.pfx -inkey myserver.key -in myserver.crt
我正在使用OpenSSL.exe
控制台.
我收到错误: unable to load certificates
我也试过这个:x509 -text -in myserver.key
并收到错误:0906D06D06C:PEM_read_bio:no start line:.\crypto\pem\pem_lib.b.c:703:Expecting: TRUSTED CERTIFICATE
如果我尝试myserver.crt,我也会收到错误.
无论我做什么,我似乎都能得到它.
有人可以帮忙吗?
我收到错误:无法加载证书
myserver.crt
需要采用PEM格式.是否有----- BEGIN CERTIFICATE -----
和----- END CERTIFICATE -----
?
myserver.crt
实际上应该是一个证书链(而不仅仅是一个服务器证书).链应包括客户端验证链所需的所有中间证书.
您发送所有中间证书来解决"哪个目录"问题."哪个目录"是PKI中众所周知的问题.本质上,客户端不知道从哪里获取缺少的中间证书.为了避免这个问题,你发送所有中间体.
我经常使用Startcom,因为它们提供免费的Class 1证书.当我从他们那里获得签名的服务器证书(例如,www-example-com.crt)时,我将他们的Class 1 Server Intermediate添加到它.我从他们的Startcom CA证书网站上获得了他们的Class 1 Server Intermediate .我使用的是sub.class1.server.ca.pem
.
使用www-example-com.crt
,我的服务器证书如下所示:
$ cat www-example-com.crt -----BEGIN CERTIFICATE----- < My Server Certificate > -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- < Startcom Intermediate > -----END CERTIFICATE-----
为完整起见,私钥(例如www-example-com.key
)也采用PEM格式.它使用-----BEGIN RSA PRIVATE KEY-----
和-----END RSA PRIVATE KEY-----
.
使用PEM格式的服务器证书(以及所需的中间人)和私钥,然后我发出以下内容(看起来与您使用的命令相同):
openssl pkcs12 -export -in www-example-com.crt -inkey www-example-com.key -out www-example-com.p12
客户端连接时,它们使用Startcom CA. 因此,要测试连接(加载到IIS后):
openssl s_client -connect www.example.com:443 -CAfile startcom-ca.pem
该命令应以"验证OK"完成:
SSL-Session: Protocol : TLSv1 Cipher : DHE-RSA-AES256-SHA Session-ID: 37E5AF0EE1745AB2... Session-ID-ctx: Master-Key: 7B9F8A79D3CC3A41... Key-Arg : None Start Time: 1243051912 Timeout : 300 (sec) Verify return code: 0 (ok)
我也试过这个:x509 -text -in myserver.key并收到错误...
x509
是证书.如果要转储密钥,请使用OpenSSL pkey
命令.请参阅有关OpenSSL pkey(1)
命令的文档.