我在过去三个小时内一直在努力尝试使用pfx
创建。OpenSSL
文件。我一直关注此document,并且一直按照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,我也会收到错误。
无论我做什么,我似乎都能得到它。
有人可以帮忙吗?
答案 0 :(得分:13)
我收到错误:无法加载证书
myserver.crt
需要采用PEM格式。它有----- BEGIN CERTIFICATE -----
和----- END CERTIFICATE -----
吗?
myserver.crt
实际上应该是一个证书链(而不仅仅是一个服务器证书)。该链应包括客户端验证链所需的所有中间证书。
您发送所有中间证书以解决"哪个目录"问题。 "哪个目录"是PKI中众所周知的问题。本质上,客户端不知道从哪里获取缺少的中间证书。为了避免这个问题,你发送所有中间体。
我经常使用Startcom,因为他们提供免费的Class 1证书。当我从他们那里获得签名的服务器证书(例如,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
-----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
命令应该以&#34;验证确定&#34;:
完成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)
命令的文档。
答案 1 :(得分:1)
我一直关注这个文件......
顺便提一下,来自您的文档cited:
基本证书是证书的公共名称(CN) 证书设置为客户端的特定域或子域 将用于访问该网站。例如,www.contoso.com。这些 证书仅保护CN指定的单个域名。
这类事情有两个标准。首先是RFC,其次是CA-Browser(CA / B)要求。 RFC是通用的,因为它们适用于许多不同的协议和服务,并且它们构建了广泛的网络以涵盖许多现有的实践。由于这些原因,RFC有些邋 - - 它们允许许多反直觉的东西。例如,请查看第4.2.1.3节中RFC 5280允许的keyUsage
。
CA和浏览器聚在一起组成了CA / B论坛。他们一起发布了他们遵循的标准。 CA / B实践更加自律(您可能会将其视为RFC的一个子集)。如果您查看他们的Baseline Requirements,那么您会发现CN
已弃用且不应使用。如果使用CN
,则SAN
:
9.2.2主题通用名称字段
证书字段:subject:commonName(OID 2.5.4.3)
必填/可选:已弃用(不鼓励,但未被禁止)
内容:如果存在,该字段必须包含单个IP地址或 完全限定的域名,是包含在其中的值之一 证书的subjectAltName扩展名(参见第9.2.1节)。
底线:您应该避免在CN
中添加主机名或域名。你可以避免它,因为这是CA同意做的事情,也是浏览器所期望的。 (如果您没有通过浏览器访问该网站,那么就按照自己的意愿行事。)
幽默地,两个标准都指定使用完全合格的域名。 FQDN是以点&#34;结尾的名称。&#34;。我还没有看到任何一个标准都能很好地形成的证书。