我有一台 Windows Server 2012r2,既充当证书颁发机构,又充当 IIS https 服务器。我有一个 Linux 客户端。
此命令在我的 Linux 客户端上运行良好,并且行为完全符合预期,因此我相信我的客户端基本上是完好无损的:
$ openssl s_client -connect google.com:443 -showcerts
我已将公共 CA 证书从我的 Windows Server 导出为 CA.cer,并将其复制到我的 Linux 客户端。
我已为 IIS 颁发了自签名证书。该证书具有“主题名称:CN=example.com、CN=*.example.com”和“主题备用名称:IPV4=10.1.1.10、IPV4=10.1.1.11、IPV4=100.100.100.100”。我已正确安装它,这意味着它出现在 *:443 的默认网站绑定中。
我无法想象这怎么会更简单,但我认为我在那一点点上做错了什么,正如你将在下面的例子中看到的那样:
在我的 Linux 客户端上我运行:
$ openssl s_client -showcerts -CAfile CA.cer -connect 10.1.1.11:443
结果我看到:
CONNECTED(00000005)
depth=0 CN = *.example.com, CN = example.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = *.example.com, CN = example.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 CN = *.example.com, CN = example.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/CN=*.example.com/CN=example.com
i:/DC=com/DC=example/CN=Positive Example, Inc.
-----BEGIN CERTIFICATE-----
:
-----END CERTIFICATE-----
---
Server certificate
subject=/CN=*.example.com/CN=example.com
issuer=/DC=com/DC=example/CN=Positive Example, Inc.
---
No client certificate CA names sent
---
SSL handshake has read 2002 bytes and written 431 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-SHA384
Session-ID: XXX...
Session-ID-ctx:
Master-Key: XXX...
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1481129355
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)
---
有人对这个程序有什么想法吗?
谢谢您的帮助。