Php
CURL 不會連接到自己
我遇到了一個奇怪的問題,即 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 伺服器的配置,如果您有權訪問它)。