我遇到了错误:无法加载证书。
要求
myserver.crt
以PEM格式提供。它是否包含
----- BEGIN CERTIFICATE -----
和
----- END CERTIFICATE -----
?
myserver.crt
实际上应该是一连串的证书(不仅仅只是一个服务器证书)。该链应包括客户端验证链所需的所有中间证书。
您可以发送所有中间证书以解决“哪个目录”问题。 “哪个目录”是PKI中众所周知的问题。实质上,客户端不知道去哪里获取缺失的中间证书。为避免此问题,您应发送所有中间证书。
我经常使用
Startcom,因为他们提供免费的一级证书。当我从他们那里获得签名的服务器证书(例如,www-example-com.crt)时,我将他们的Class 1 Server Intermediate添加到其中。我可以从他们的网站
Startcom CA certs上获取他们的Class 1 Server Intermediate。我使用的是
sub.class1.server.ca.pem
。
使用
www-example-com.crt
,我的服务器证书如下:
$ cat www-example-com.crt
< My Server Certificate >
< Startcom Intermediate >
为了完整起见,私钥(例如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后测试连接的方式为:
当客户端连接时,它们使用Startcom CA。因此,在加载到IIS后测试连接的方式为:
openssl s_client -connect www.example.com:443 -CAfile startcom-ca.pem
该命令执行完毕后应显示"Verify 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)
命令文档。