Php

CURL 不會連接到自己

  • March 4, 2015

我遇到了一個奇怪的問題,即 CURL 無法連接到自己的伺服器。例如,如果我在伺服器example.com上

wget https://example.com/  <--- WORKS FIND

curl https://example.com gets error: 35 SSL connect error

Curl 適用於連接到其他外部 SSL 地址,但不會連接到自身。

curl 也適用於在沒有 SSL 的情況下連接到自身。

這是 curl -v 的輸出:

curl -v https://example.com/
* About to connect() to example.com port 443 (#0)
*   Trying 50.70.60.100... connected
* Connected to example.com (50.70.60.100) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
 CApath: none
* NSS error -12286
* Error in TLS handshake, trying SSLv3...
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: example.com
> Accept: */*
>
* Connection died, retrying a fresh connect
* Closing connection #0
* Issue another request to this URL: 'https://example.com/'
* About to connect() to example.com port 443 (#0)
*   Trying 50.70.60.100... connected
* Connected to example.com (50.70.60.100) port 443 (#0)
* TLS disabled due to previous handshake failure
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
 CApath: none
* NSS error -12286
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error
NSS error -12286

根據NSS 文件,-12286 表示:

SSL_ERROR_NO_CYPHER_OVERLAP

“無法與對等方安全通信:沒有通用加密算法。”

本地和遠端系統不共享共同的密碼套件。這可能是由於任一端的錯誤配置造成的。這可能是由於伺服器被錯誤配置為使用具有 RSA 密鑰交換算法的非 RSA 證書。

您可以嘗試告訴 curl 使用哪個密碼及其--ciphers選項。

有關列舉伺服器支持的密碼列表的一種方法,請參見此處(或檢查 Web 伺服器的配置,如果您有權訪問它)。

引用自:https://unix.stackexchange.com/questions/188068