为什么网站有的显示256位加密,有的显示128位加密?

在 SSL/TLS 会话期间,使用了两种类型的加密:对称和非对称。虽然非对称加密的密钥大小(2048/4096 位)取决于颁发的证书和适当的私钥,但对称加密的密钥大小(128/256 位)既不取决于证书也不取决于私钥,而是仅在服务器和浏览器(或任何其他类型的客户端)的功能和设置上。

一旦服务器和客户端之间的连接建立,并且证书中编码的公钥从服务器发送到客户端,客户端需要生成一个对称密钥来加密将进一步传输的数据。客户端和服务器比较它们的可用加密算法列表并选择它们都支持的最强的对称加密算法。如今,现代客户端和服务器通常为此使用以下算法:

  • AES(128位)
  • AES(256位)

如果您的服务器允许指定在 SSL/TLS 握手期间应选择的算法,您可以强制您的服务器仅使用 256 位加密。显然,您应该首先确保您的服务器支持 256 位加密。在基于 linux 的服务器的情况下,通常取决于 openssl 库。要查找支持的密码列表,请运行以下命令:

$ openssl ciphers

如果您在输出中看到 AES128,您可能会强制您的服务器仅使用此密码进行对称加密。例如,在 Apache 中,您只需在描述您的证书的 VirtualHost 记录中添加以下行:

SSLCipherSuite AES256

请记住,使用不支持 AES(256) 算法的此类配置客户端将无法与您的服务器建立 SSL/TLS 连接。因此,这样的配置会提高安全强度,但会降低与客户端的兼容性。

通过设置SSLCipherSuite ,修改加密套件的顺序,优先使用AES256加密。具体需要客户端支持才可以。

SSLProtocol         all -SSLv3 -TLSv1 -TLSv1.1
# Many ciphers defined here require a modern version (1.0.1+) of OpenSSL. Some
# require OpenSSL 1.1.0, which as of this writing was in pre-release.
SSLCipherSuite      ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder on
SSLCompression      off
SSLSessionTickets   off