我们如何将密码列表传递给 OpenSSLs_client程序?
我们可以这样传递单一密码:
openssl s_client -cipher 'ECDHE-RSA-AES256-SHA' -connect www.google.com:443
但是如何传递多个密码的列表?
我们如何将密码列表传递给 OpenSSLs_client程序?
我们可以这样传递单一密码:
openssl s_client -cipher 'ECDHE-RSA-AES256-SHA' -connect www.google.com:443
但是如何传递多个密码的列表?
正如 Steffen Ullrich 所提到的,您可以将密码列表传递给. 这不是一个单独的项目,而是一个规范,也可以用于 nginx选项或 Apache选项。-ciphers_clientssl_ciphersSSLCipherSuite
您可以使用空格、逗号或冒号分隔符传递多个密码。例子:
openssl s_client -cipher ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-GCM-SHA384 \
-connect example.com:443
上面的列表指定了两个特定的密码。一组密码也可以通过。这是一个密码列表规范的示例,它需要经过身份验证的临时 ECDH 密钥协议 (ECDH)、用于身份验证的 RSA 以及仅被认为是“高”加密的密码套件:
openssl s_client -cipher ECDH+aRSA+HIGH -connect example.com:443
这扩展到什么?该openssl ciphers命令可用于此目的:
$ openssl ciphers ECDH+aRSA+HIGH
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA
或更详细地说:
$ openssl ciphers -v ECDH+aRSA+HIGH
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
ECDHE-RSA-AES128-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
ECDHE-RSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=RSA Enc=3DES(168) Mac=SHA1
有关更多信息,请阅读ciphers手册页。
虽然 OpenSSL 的文档缺乏很多,但这部分实际上是有据可查的。从s_client 的手册页:
-cipher 密码列表
这允许修改客户端发送的密码列表。尽管服务器确定使用哪个密码套件,但它应该采用客户端发送的列表中第一个支持的密码。有关详细信息,请参阅 ciphers 命令。
在提到的密码文档中,您实际上会发现很多关于密码列表格式、密码字符串和密码套件名称的详细信息。事实上,文档是如此广泛,以至于在那里阅读它比将它包含在这个答案中要好得多。
它具有完全相同的语法,例如。SSLCipherSuiteApache 中的配置设置,或许多类似的配置开关。示例列表:
EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:!SSLv2:!SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
注意重要的字符:
:
+
!