【SSL】各组件TLS/SSL加解密套件的命名规则
curl 、nginx、java 关于 TLS/SSL 加解密套件的命名规则有什么不同之处?
TLS/SSL 加解密套件的命名规则在 curl、nginx 和 Java 中有一些不同之处。
-
curl: 在 curl 中,TLS/SSL 加解密套件的命名规则使用一种简化的方式。它使用类似于 OpenSSL 的命名规则,其中加密算法和密钥交换算法的名称用短字符串表示。例如,
AES128-SHA256
表示使用 AES 128 位加密算法和 SHA-256 哈希算法。 -
nginx: 在 nginx 中,TLS/SSL 加解密套件的命名规则稍微复杂一些。它使用了一种更详细的命名规则,将加密算法、密钥交换算法和哈希算法都表示出来。例如,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
表示使用 ECDHE 密钥交换算法、RSA 签名算法、AES 256 位加密算法和 SHA-384 哈希算法。 -
Java: 在 Java 中,TLS/SSL 加解密套件的命名规则与 nginx 类似,也是使用了详细的命名规则。它将加密算法、密钥交换算法和哈希算法都表示出来,但是使用了一种不同的命名方式。例如,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
表示使用 ECDHE 密钥交换算法、RSA 签名算法、AES 256 位加密算法和 SHA-384 哈希算法。
以下是更详细的例子:
-
curl: 在 curl 中,加解密套件的命名规则使用 OpenSSL 的简化方式。例如:
-
AES128-SHA256
: 使用 AES 128 位加密算法和 SHA-256 哈希算法。 -
ECDHE-RSA-AES256-GCM-SHA384
: 使用 ECDHE 密钥交换算法、RSA 签名算法、AES 256 位加密算法和 GCM 模式,以及 SHA-384 哈希算法。
-
-
nginx: 在 nginx 中,加解密套件的命名规则更详细。例如:
-
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
: 使用 ECDHE 密钥交换算法、RSA 签名算法、AES 128 位加密算法和 GCM 模式,以及 SHA-256 哈希算法。 -
TLS_RSA_WITH_AES_256_CBC_SHA256
: 使用 RSA 密钥交换算法、AES 256 位加密算法和 CBC 模式,以及 SHA-256 哈希算法。
-
-
Java: 在 Java 中,加解密套件的命名规则与 nginx 类似,但使用了不同的命名方式。例如:
-
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
: 使用 ECDHE 密钥交换算法、RSA 签名算法、AES 128 位加密算法和 GCM 模式,以及 SHA-256 哈希算法。 -
TLS_RSA_WITH_AES_256_CBC_SHA256
: 使用 RSA 密钥交换算法、AES 256 位加密算法和 CBC 模式,以及 SHA-256 哈希算法。
-
这些例子展示了在不同的软件和库中,对于 TLS/SSL 加解密套件的命名规则的具体表示方式。
每个命名规则都包含了加密算法、密钥交换算法和哈希算法的信息,以便准确描述所使用的加解密套件的组合。
总体而言,这些命名规则都是为了清晰地表示所使用的加解密套件的组合。
不同的软件和库可能使用不同的命名规则,但它们都遵循了一定的标准,以便能够准确地描述所使用的加解密算法。
从哪里查询各软件和库对于 TLS/SSL 加解密套件的命名规则?
可以从以下文档中查询各软件和库对于 TLS/SSL 加解密套件的命名规则:
-
curl: 在 curl 中,可以查阅官方文档
https://curl.haxx.se/docs/ssl-ciphers.html
以获取关于 TLS/SSL 加解密套件命名规则的详细信息。 -
nginx: 在 nginx 中,可以查阅官方文档
https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers
以获取关于 TLS/SSL 加解密套件命名规则的详细信息。 -
Java: 在 Java 中,可以查阅官方文档
https://docs.oracle.com/en/java/javase/14/security/oracle-providers.html#GUID-28AB9F54-9C0D-4B37-8E4D-32D86C3D66F6
以获取关于 TLS/SSL 加解密套件命名规则的详细信息。此外,还可以查阅相关的 Java 加密扩展 (Java Cryptography Extension, JCE) 文档。
这些官方文档提供了关于各自软件和库的 TLS/SSL 加解密套件命名规则的详细说明和示例。
通过参考这些文档,您可以了解不同软件和库对于加解密套件命名规则的具体要求和表示方式。
如何知道 TLSv1.2 支持的所有 加解密套件的名称?
要了解 TLSv1.2 支持的所有加解密套件的名称,可以使用以下方法:
-
OpenSSL: 如果您有 OpenSSL 安装在您的机器上,可以使用以下命令列出 TLSv1.2 支持的所有加解密套件的名称:
openssl ciphers -v 'TLSv1.2'
这将输出 TLSv1.2 支持的所有加解密套件的名称列表。
-
Java: 如果您在 Java 中使用 TLSv1.2,可以使用
javax.net.ssl.SSLServerSocket
类的getSupportedCipherSuites()
方法来获取 TLSv1.2 支持的所有加解密套件的名称:String[] cipherSuites = SSLServerSocket.getDefault().getSupportedCipherSuites();
这将返回一个包含 TLSv1.2 支持的所有加解密套件的名称的字符串数组。
-
curl: 如果您使用 curl,在命令行中可以使用以下命令来获取 TLSv1.2 支持的所有加解密套件的名称:
curl --tlsv1.2 --cipher '-'
这将输出 TLSv1.2 支持的所有加解密套件的名称列表。
请注意,具体支持的加解密套件名称可能因您的系统和配置而有所不同。以上方法将根据您的环境提供 TLSv1.2 支持的加解密套件的名称列表。
curl 指定 TLS版本的使用举例
使用 curl
命令指定 TLS 版本有两种方式:通过 -tls-max
和 -tls1.3
参数。
-
通过
-tls-max
参数指定最大支持的 TLS 版本。可以使用以下命令:curl --tls-max <TLS 版本> <URL>
其中
<TLS 版本>
可以是以下选项之一:tls1.0
、tls1.1
、tls1.2
、tls1.3
。这将设置curl
使用指定的 TLS 版本进行连接。例如,要使用 TLSv1.2 进行连接,可以运行以下命令:
curl --tls-max tls1.2 https://example.com
-
通过
-tls1.3
参数强制使用 TLSv1.3 进行连接。可以使用以下命令:curl --tls1.3 <URL>
这将强制
curl
使用 TLSv1.3 进行连接。例如,要强制使用 TLSv1.3 进行连接,可以运行以下命令:
curl --tls1.3 https://example.com
请注意,具体使用哪种方式取决于您的 curl
版本和系统环境。某些较旧的 curl
版本可能不支持这些参数。
各组件从哪个版本开始支持TLSv1.3 ?
OpenSSL 1.1.1 版本开始支持 TLSv1.3。
在此版本之前的较早版本不支持 TLSv1.3。
如果您需要在您的服务器或系统上使用 TLSv1.3,请确保您已经升级到 OpenSSL 1.1.1 或更高版本。
curl
从版本 7.61.0 开始支持 TLSv1.3。如果您的 curl
版本低于此版本,将无法使用 -tls1.3
参数来强制使用 TLSv1.3 进行连接。
如果您需要使用 TLSv1.3,建议升级 curl
到版本 7.61.0 或更高版本。您可以通过运行以下命令检查 curl
的版本:
curl --version
这将显示 curl
的版本信息,您可以检查其中的版本号。
如果版本低于 7.61.0,则需要更新 curl
到支持 TLSv1.3 的版本。
具体的更新方法将取决于您所使用的操作系统和包管理器。
Nginx 从版本 1.13.0 开始支持 TLSv1.3。如果您的 Nginx 版本低于此版本,将无法使用 TLSv1.3。
如果您需要使用 TLSv1.3,建议升级 Nginx 到版本 1.13.0 或更高版本。具体的更新方法将取决于您所使用的操作系统和包管理器。请注意,TLSv1.3 的支持还取决于您所使用的 OpenSSL 版本。确保您的 OpenSSL 版本也支持 TLSv1.3。
您可以通过运行以下命令来检查 Nginx 的版本:
nginx -v
这将显示 Nginx 的版本信息,您可以检查其中的版本号。
如果版本低于 1.13.0,则需要更新 Nginx 到支持 TLSv1.3 的版本。
Java JDK 从版本 11 开始支持 TLSv1.3。如果您的 JDK 版本低于 11,则无法使用 TLSv1.3。
如果您需要在 Java 应用中使用 TLSv1.3,请确保您已经升级到 JDK 11 或更高版本。具体的更新方法将取决于您所使用的操作系统和 JDK 发行版。
您可以通过运行以下命令来检查您的 JDK 版本:
java -version
这将显示 Java 的版本信息,您可以检查其中的版本号。如果版本低于 11,则需要更新 JDK 到支持 TLSv1.3 的版本。