Pet*_*ikh 1 ubuntu openssl curl ssl-certificate-errors
我必须使用使用自签名证书(来自 Ubuntu)的服务。我已将公司的 CA 添加到受信任列表 (Ubuntu)。之后“链中自签名证书”错误消失了,但现在我收到“CA证书太弱”错误。例如
curl -vvv https://someservicehost.net
* Trying 93.184.216.34:443...
* TCP_NODELAY set
* Connected to someservicehost.net (93.184.216.34) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, bad certificate (554):
* SSL certificate problem: CA certificate key too weak
* Closing connection 0
curl: (60) SSL certificate problem: CA certificate key too weak
Run Code Online (Sandbox Code Playgroud)
我试图搜索它,但令人惊讶的是关于这方面的信息很少。所以我有2个问题
在撰写本文时,example.net
使用了由DigiCert SHA2 Secure Server CA
中间 CA签名的证书,而该证书又由DigiCert Global Root CA
根 CA签名。两个 CA 证书都使用2048 位 RSA密钥。但是,如果您使用的是企业 TLS 代理,则实际 CA 可能仅使用 1024 位密钥(您没有提供任何详细信息),因此请根据该 CA 证书的密钥大小调整答案的其余部分. 如果您无法避免使用代理,那么比下面描述的更好的方法是查询是否可以在其上使用具有更强密钥的 CA 证书。
当 OpenSSL 验证证书链时,它会根据配置的安全级别检查密钥大小。根据文档,级别 1 对应于至少 80 位的安全性,级别 2 到 112 位,级别 3 到 128 位,级别 4 到 192 位和级别 5 到 256 位。
RSA 2048 位密钥目前被认为具有 112 位安全性,因此如果上述级别为 3 或更高,则该密钥因太弱而被拒绝。因此,要接受这样的证书,您必须将安全级别降低到 2 或更低。
级别可以在编译时或通过配置进行配置(也可以通过链接 libssl/libcrypto 的程序更改,但看起来 curl 没有这样做)。根据上面链接的文档,默认级别为 1。
因此,首先检查编译选项 ( openssl version -f
),然后检查openssl.cnf
系统上的默认文件(它所在的目录可以通过 确定openssl version -d
)。可能有一个设置称为CipherSuites
设置SECLEVEL
(例如CipherString = DEFAULT@SECLEVEL=3
将其设置为级别 3)。
要覆盖级别,请更改默认配置文件,或通过OPENSSL_CONF
环境变量使用自定义文件。例如,以下文件将默认安全级别设置为 2(有关详细信息,请参阅文档):
openssl_conf = openssl_conf_sect
[openssl_conf_sect]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
CipherString = DEFAULT@SECLEVEL=2
Run Code Online (Sandbox Code Playgroud)
它可以与例如一起使用OPENSSL_CONF=/path/to/this.cnf curl -vvv https://example.net
。
正如@dave_thompson_085 在评论中指出的那样,curl
允许在命令行上配置密码套件。因此,您可以简单地通过--ciphers
选项更改安全级别,而不是摆弄配置:
curl -vvv --ciphers DEFAULT@SECLEVEL=2 https://example.net
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6382 次 |
最近记录: |