我在使用内部 SSL 证书时遇到问题。我有一个付费域名,但用于我们的内部网络资源(内部网)。有一个 Windows Server 2012 Active Directory 服务器,使用由服务器自签名根 CA 证书签名的 SSL 证书。这在 Windows 上运行良好(如下图第一张图所示),如果未安装根 CA,它将发出 SSL 警告。安装根 CA 后,它可以正常工作,所以我知道证书不是无效的。
问题是,如果没有安装 Root CA,OS X 就会出现 SSL 警告,但无论如何都不会让用户访问它。当将 Root CA 安装到系统钥匙串中并设置为始终信任时,它根本就不会连接。
我努力了:
- 切换浏览器,因此我已将 Firefox、Chome 和 Safari 绑定。
- 使用较旧的 OSX 版本一直回到 OS X 10.7,问题仍然存在
OpenSSL 输出:
CONNECTED(00000005) depth=0 verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 verify error:num=21:unable to verify the first certificate verify return:1
--- Certificate chain 0 s: i:/DC=ltd/DC=beaconsoft/CN=eddystone-ca
-----END CERTIFICATE-----
--- Server certificate subject= issuer=/DC=ltd/DC=beaconsoft/CN=eddystone-ca
--- No client certificate CA names sent Server Temp Key: ECDH, X25519, 253 bits
--- SSL handshake has read 2161 bytes and written 293 bytes
--- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: 8D370000FC765F11E029CA4E23ED4AE0804CAA88CAE16435514843DAF1C7E7D3
Session-ID-ctx:
Master-Key: EC6F98CE80E8F82A97D2D554335A41FF71B1E13D0097DC0F2755795085B97B426FE95B8EA81D6BE511C28EB3EECFAA51
Start Time: 1559054773
Timeout : 7200 (sec)
Verify return code: 21 (unable to verify the first certificate)
实际证书数据已被修剪以适合。
答案1
正如我所怀疑的,导致您出现问题的原因是服务器的证书。
其中至少有2点需要纠正:
CRL 分发点:
[1]CRL Distribution Point Distribution Point Name: Full Name: URL=ldap:///CN=eddystone-ca,CN=eddystone,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=beaconsoft,DC=ltd?certificateRevocationList?base?objectClass=cRLDistributionPoint (ldap:///CN=eddystone-ca,CN=eddystone,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=beaconsoft,DC=ltd?certificateRevocationList?base?objectClass=cRLDistributionPoint)
权威信息访问:
[1]Authority Info Access Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2) Alternative Name: URL=ldap:///CN=eddystone-ca,CN=AIA,CN=Public Key Services,CN=Services,CN=Configuration,DC=beaconsoft,DC=ltd?cACertificate?base?objectClass=certificationAuthority (ldap:///CN=eddystone-ca,CN=AIA,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=beaconsoft,DC=ltd?cACertificate?base?objectClass=certificationAuthority) [2]Authority Info Access Access Method=On-line Certificate Status Protocol (1.3.6.1.5.5.7.48.1) Alternative Name: URL=http://eddystone.beaconsoft.ltd
非域连接的 Windows 和所有非 Windows 客户端无法访问您的 CRL 分发点。
根据现代最佳实践,建议避免在CRL Distribution Point
和Authority Info Access
记录中使用 LDAP。
你可以阅读更多内容,例如,那里
另外,我不确定您的证书中是否有空的主题。如果您仍定义 SAN 名称DNS Name=Cape.beaconsoft.ltd
,我也会添加一个正确的主题。
顺便说一下,我们正在讨论 的证书overlord.beaconsoft.ltd
,您也发送了一份 的证书Cape.beaconsoft.ltd
。但如果它们是由同一个 CA 制作的,使用相同的模板——这并不重要——只需更正您的 CRL 和 AIA 记录,使其HTTP
仅包含访问点