我负责运行apache的web服务器,它承载了大约15个不同的站点。现在,一个站点需要与另一个站点通信,我们的开发人员试图使用PHP通过curl连接到它。这不管用。我试图通过以下方法在命令行中调试它:
curl --verbose https://deutsche-unterstuetzungskasse.de它给了我错误60 (在主题标题中),这是相当奇怪的b/c与所有其他页面的工作。
更详细:
* About to connect() to deutsche-unterstuetzungskasse.de port 443 (#0)
* Trying 195.244.228.197...
* connected
* Connected to deutsche-unterstuetzungskasse.de (195.244.228.197) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection #0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
...我们所有的页面都配备了一个有效的ssl证书,以及一个不能工作的ssl证书。唯一的区别似乎是这个没有通配符证书。如果我设置curl选项--cacert /etc/ssl/certs/ca-certificates.crt,它工作得很好,但它并不能真正解决问题。在这里,详细的输出:
* About to connect() to deutsche-unterstuetzungskasse.de port 443 (#0)
* Trying 195.244.228.197...
* connected
* Connected to deutsche-unterstuetzungskasse.de (195.244.228.197) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using ECDHE-RSA-AES256-GCM-SHA384
* Server certificate:
* subject: C=DE; postalCode=22303; ST=Hamburg; L=Hamburg; street=Barmbeker Stra�e 2-6; O=Cevo Systemhaus AG; OU=IT; CN=deutsche-unterstuetzungskasse.de
* start date: 2017-10-19 00:00:00 GMT
* expire date: 2019-01-17 23:59:59 GMT
* subjectAltName: deutsche-unterstuetzungskasse.de matched
* issuer: C=GB; ST=Greater Manchester; L=Salford; O=COMODO CA Limited; CN=COMODO RSA Organization Validation Secure Server CA
* SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.26.0
> Host: deutsche-unterstuetzungskasse.de
> Accept: */*
>
...有人能帮我吗?我的知识已接近尾声
编辑:
因此,我做了一些进一步的研究,并发现这个整洁的SSL服务器测试:
https://www.ssllabs.com/ssltest/analyze.html?d=deutsche-unterstuetzungskasse.de
这似乎表明了我的问题。服务器以某种方式将*c-core.de作为第二个证书中的替代名称。我怎么才能解决这个问题?
发布于 2017-11-29 15:07:11
我设法解决了这个问题!正如西蒙格林伍德所说,这可能与旧软件有关,这是事实,但卷曲已经是最新的。我升级了Apache和openssl,然后出现了另一个错误:
“已在哈希表中的证书routines:X509_STORE_add_cert:cert”
我在谷歌或其他地方找不到很多,但在某个地方有人说
c_rehash能解决这个问题。最终还是成功了!我仍然有一个问题,在证书中的错误名称,但它似乎不再麻烦卷曲进一步。
发布于 2017-11-28 15:47:49
通配符证书是否来自同一发行人?从证据上看,您似乎没有一个有效的Comodo CA。在您的apache配置中,通常会有SSLCertificateFile和SSLCertificateChainFile的设置,所以请检查。
https://serverfault.com/questions/885536
复制相似问题