- 为什么会这样?我无法在网上找到关于 ssl 密码如何在 curl 中工作的解释
这取决于几件事。客户端和服务器库、客户端和服务器配置等。您需要提供更多详细信息。
- 有什么方法可以让 curl 告诉我哪些密码
为工作使用正确的工具。在这种情况下,它是一个更新的sslscan。
- 我需要将哪些选项传递给 curl_setopt 以便我的 php 脚本能够连接到此服务器?
CURLOPT_SSL_CIPHER_LIST.
- 如果我将密码设置为此,会破坏其他网站吗?
也许吧。这取决于该特定站点的配置。
理想情况下,您选择 12 或 16 个您认可的密码套件,然后使用它们而不是一个。 12 或 16 涵盖了您在 Internet 上遇到的大多数网站。
这是我通常使用的列表。来自Which Cipher Suites to enable for SSL Socket?:
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
- TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_128_CBC_SHA
我想放弃 TLS_RSA_* 密码套件,因为它们是密钥传输,但我遇到的那些较旧的 IIS 服务器需要它们。
从下面的扫描结果可以看出,这个列表与服务器的列表相交。
请注意,您没有指定,例如TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384。相反,在 OpenSSL 中,您为套件指定 OpenSSL 的名称 ECDHE-ECDSA-AES256-SHA384。您可以在 documentation for openssl ciphers 找到 OpenSSL 名称。
使用 OpenSSL,您还可以使用字符串 "HIGH:!aNULL:!MD5:!RC4:!PSK:!SRP"。这将为您提供大约 40 或 50 个相当不错的选择。
您可以运行 OpenSSL ciphers 命令来查看列表是什么:
$ openssl ciphers -v 'HIGH:!aNULL:!MD5:!RC4:!PSK:!SRP'
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES256-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
...
您可以使用 sslscan 的更新版本来确定可用的密码套件:
$ sslscan --no-failed sslspdy.com
...
Testing SSL server sslspdy.com on port 443
Supported Server Cipher(s):
Accepted TLSv1 256 bits ECDHE-ECDSA-AES256-SHA
Accepted TLSv1 128 bits ECDHE-ECDSA-AES128-SHA
Accepted TLSv1.1 256 bits ECDHE-ECDSA-AES256-SHA
Accepted TLSv1.1 128 bits ECDHE-ECDSA-AES128-SHA
Accepted TLSv1.2 256 bits ECDHE-ECDSA-AES256-GCM-SHA384
Accepted TLSv1.2 256 bits ECDHE-ECDSA-AES256-SHA384
Accepted TLSv1.2 256 bits ECDHE-ECDSA-AES256-SHA
Accepted TLSv1.2 128 bits ECDHE-ECDSA-AES128-GCM-SHA256
Accepted TLSv1.2 128 bits ECDHE-ECDSA-AES128-SHA256
Accepted TLSv1.2 128 bits ECDHE-ECDSA-AES128-SHA
Prefered Server Cipher(s):
TLSv1 128 bits ECDHE-ECDSA-AES128-SHA
TLSv1.1 128 bits ECDHE-ECDSA-AES128-SHA
TLSv1.2 128 bits ECDHE-ECDSA-AES128-GCM-SHA256