我在从命令行连接到 SSL 站点(不是我的)时遇到了麻烦。认证路径为“GeoTrust Global CA”>“GeoTrust SSL CA”>“*.131500.com.au”。服务器最近更换了他们的证书(自 2013 年 5 月 13 日起有效),大约在那时它停止工作。
使用 curl、wget 和“openssl s_client”、whynopaddlock.com 和三个不同的主机(两个不同的 Ubuntu 13.04 主机,包括一个新的 VM 和一个 Windows-7-x64/cygwin)时,我看到了同样的问题。
不过,使用浏览器时我没有遇到问题(Windows-7-x64 上的 Google Chrome 26.0.1410.64 m)。
有人能指点一下吗?我通常会责怪我的 SSL 客户端配置,但这种情况发生在多个主机上。接下来我会责怪网站的配置,但为什么它在 Chrome 中运行良好?
GeoTrust 是否可能发生了某些变化,需要更改配置?
www.whynopadlock.com 报道:
SSL verification issue (Possibly mis-matched URL or bad intermediate cert.). Details:
ERROR: cannot verify tdx.131500.com.au's certificate, issued by `/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA': Unable to locally verify the issuer's authority.
openssl s_client 有以下要说的:
$ openssl s_client -connect tdx.131500.com.au:443
CONNECTED(00000003)
depth=0 serialNumber = 8z3ZNMMt8GMi9Qumrn0xficRkxAYJZQq, C = AU, ST = New South Wales, L = North Sydney, O = SERCO GROUP PTY LIMITED, CN = *.131500.com.au
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 serialNumber = 8z3ZNMMt8GMi9Qumrn0xficRkxAYJZQq, C = AU, ST = New South Wales, L = North Sydney, O = SERCO GROUP PTY LIMITED, CN = *.131500.com.au
verify error:num=27:certificate not trusted
verify return:1
depth=0 serialNumber = 8z3ZNMMt8GMi9Qumrn0xficRkxAYJZQq, C = AU, ST = New South Wales, L = North Sydney, O = SERCO GROUP PTY LIMITED, CN = *.131500.com.au
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/serialNumber=8z3ZNMMt8GMi9Qumrn0xficRkxAYJZQq/C=AU/ST=New South Wales/L=North Sydney/O=SERCO GROUP PTY LIMITED/CN=*.131500.com.au
i:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFDzCCA/egAwIBAgIDAjwuMA0GCSqGSIb3DQEBBQUAMEAxCzAJBgNVBAYTAlVT
MRcwFQYDVQQKEw5HZW9UcnVzdCwgSW5jLjEYMBYGA1UEAxMPR2VvVHJ1c3QgU1NM
IENBMB4XDTEzMDUxMzA2MTYyNVoXDTE0MDYxNDIzMTE1NlowgaUxKTAnBgNVBAUT
IDh6M1pOTU10OEdNaTlRdW1ybjB4ZmljUmt4QVlKWlFxMQswCQYDVQQGEwJBVTEY
MBYGA1UECBMPTmV3IFNvdXRoIFdhbGVzMRUwEwYDVQQHEwxOb3J0aCBTeWRuZXkx
IDAeBgNVBAoTF1NFUkNPIEdST1VQIFBUWSBMSU1JVEVEMRgwFgYDVQQDDA8qLjEz
MTUwMC5jb20uYXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCnn9NM
DgqNyrPFgvh+dH8Lf3DSWdr60eHYxDNnth8RDsFUWSxdpKW/nOJa8OL5DhCFgoAS
Gr53OhQw1WdK1bq8EMcVVydCs8JOZuZY5hJTKKGuO3yDXKrGkDzoGI5tI+n+oRG4
FTN+DGcQq43zRsb2BMZTCsuCBPbvb3DCSR+c+s7sJE+rG7nAB8lFzbxirNSJSXBD
8GoXHB5idMr81SeW0Ft02zc6Uc4Y+dvPsBuMijoJTB69EthaeMjp1nZc+bYrVnBt
qEOnZFXziOrvQGmpRYpLuzFLwT4wfyZBW4yHmAgSmpw2u9PONkdyvWtofr7fYNqd
A2/FX/5My4hYoRNbAgMBAAGjggGqMIIBpjAfBgNVHSMEGDAWgBRCeVQbYc1VKz5j
1TxIV/Wf+0XOSjAOBgNVHQ8BAf8EBAMCBLAwHQYDVR0lBBYwFAYIKwYBBQUHAwEG
CCsGAQUFBwMCMCkGA1UdEQQiMCCCDyouMTMxNTAwLmNvbS5hdYINMTMxNTAwLmNv
bS5hdTA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vZ3Rzc2wtY3JsLmdlb3RydXN0
LmNvbS9jcmxzL2d0c3NsLmNybDAdBgNVHQ4EFgQUhZiG+e9NpeswJV1uBQVPurXE
erMwDAYDVR0TAQH/BAIwADBvBggrBgEFBQcBAQRjMGEwKgYIKwYBBQUHMAGGHmh0
dHA6Ly9ndHNzbC1vY3NwLmdlb3RydXN0LmNvbTAzBggrBgEFBQcwAoYnaHR0cDov
L2d0c3NsLWFpYS5nZW90cnVzdC5jb20vZ3Rzc2wuY3J0MEwGA1UdIARFMEMwQQYK
YIZIAYb4RQEHNjAzMDEGCCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3RydXN0LmNv
bS9yZXNvdXJjZXMvY3BzMA0GCSqGSIb3DQEBBQUAA4IBAQB3NHVqrUfXC6o75PTE
B5EBjWkQhK/wzP8hYcN72E3zwGtHCjimSse7DDkitla4w/hrI9in9VvsWmZ8jeH4
b3H+oNjhAewBx15CEGqCmMR8zzLjmW5xIwRtoi7pgCyD7bFhixH/SbrhLlloncPW
AgTXdN0655k4DT0hD4gHAdTfx271JKcYZmoKB3Y2yAHOUCd8QB0fzGY5Y26dpyjR
okUaMiVwXQKb4xNu6NBJwwippyccCFj712ceYUedjk2OEVYTS/91l95btJht4nkZ
y56H7sQlu3Te1m8mgBsRB1hbme8VPxt0WQ21Uqu7ROJcyxDxDAFto4ITs3oogx/z
QaXz
-----END CERTIFICATE-----
subject=/serialNumber=8z3ZNMMt8GMi9Qumrn0xficRkxAYJZQq/C=AU/ST=New South Wales/L=North Sydney/O=SERCO GROUP PTY LIMITED/CN=*.131500.com.au
issuer=/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
---
No client certificate CA names sent
---
SSL handshake has read 1435 bytes and written 536 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : RC4-MD5
Session-ID: 1D1C840AF8B831E4070232FC2E8057F0BAB6E1B5A37CB3C93F415C715E4CE05F
Session-ID-ctx:
Master-Key: A00FD977D39342B4F1DEA1A4ECCD74BDD09E709FAB7468105D78D476D9E22D330102891E341AB177B98B8BD8E29C9238
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1369021662
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)
---
closed
答案1
服务器配置不正确 — 它没有发送所需的中间证书。请注意,证书链中只有一个证书:
---
Certificate chain
0 s:/serialNumber=8z3ZNMMt8GMi9Qumrn0xficRkxAYJZQq/C=AU/ST=New South Wales/L=North Sydney/O=SERCO GROUP PTY LIMITED/CN=*.131500.com.au
i:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
---
此后应该还有第二份带有该主题的证书s:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
。
在 Apache 中,使用 SSL证书链文件选项。
至于为什么该网站似乎在 Chrome 中可以正常运行,有几种可能的解释:
不同的浏览器可能使用单独的证书存储区,并且您的 Chrome 可能
GeoTrust SSL CA
直接信任该证书(但是,如果 CA 打算使用该证书作为中间证书,则情况不太可能如此)。浏览器通常会在其证书存储区中缓存中间证书,因此如果您之前访问过另一个已
GeoTrust SSL CA
正确配置中间证书的站点,那么您可能能够访问使用相同中间证书但未正确将其发送给客户端的站点,而不会出现安全警告,因为浏览器可以从其缓存中获取所需的中间证书并能够验证证书链。有问题的最终实体证书包含一个可用于获取中间证书的 HTTP URL:
Authority Information Access: OCSP - URI:http://gtssl-ocsp.geotrust.com CA Issuers - URI:http://gtssl-aia.geotrust.com/gtssl.crt
(
CA Issuers
此处的链接指向 DER 格式的颁发者证书)。即使服务器未返回中间证书,某些系统也可能能够使用此类链接来获取中间证书。根据Mozilla 错误 399324,Firefox(以及其他基于 Mozilla 的软件)目前无法跟踪此类 AIA 链接;但是,Internet Explorer 可以使用它们。
答案2
openssl 找不到中间证书。事实上 whynopadlock.com 找不到中间证书,说明证书一开始就没有安装,而它在(某些)浏览器中可以运行,因为它们已经有中间证书。网站所有者需要安装中间证书,可以从 geotrust.com 下载。安装说明也可以在那里找到。
如果有时有效,有时失败,则网站所有者忘记在全部服务器(或负载均衡器)。