跑步:
svn checkout https://hostname
给予:
svn: E170013: Unable to connect to a repository at URL 'http://hostname'
svn: E120171: Error running context: An error occurred during SSL communication
运行此命令:
curl -v --insecure https://hostname
给出
* Trying 10.181.203.1:2795...
* Connected to 10.181.203.1 (10.181.203.1) port 2795 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* TLSv1.0 (OUT), TLS header, Certificate Status (22):
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.0 (IN), TLS header, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.0 (IN), TLS header, Certificate Status (22):
* TLSv1.0 (IN), TLS handshake, Certificate (11):
* TLSv1.0 (IN), TLS header, Certificate Status (22):
* TLSv1.0 (IN), TLS handshake, Server key exchange (12):
* TLSv1.0 (OUT), TLS header, Unknown (21):
* TLSv1.0 (OUT), TLS alert, internal error (592):
* error:0A0C0103:SSL routines::internal error
* Closing connection 0
curl: (35) error:0A0C0103:SSL routines::internal error
我试图用"MinProtocol = TLSv1“来修复openssl配置,但这没有帮助。
请帮帮忙
Ubuntu 22.04 LTS
发布于 2022-05-11 19:22:00
尝试使用--trust-server-cert
,但要了解您正在绕过证书检查。
发布于 2022-06-07 10:44:05
下面是解决错误的解决方案:
curl:(35)错误:0A000152:SSL例程::禁用不安全的遗留重新协商
https://github.com/Kong/insomnia/issues/4543#issuecomment-1126771807
然后,一个新的错误:
curl:(35)错误:0A000102:SSL例程::不支持的协议
只需使用这样的旧方法:
https://stackoverflow.com/a/61568390/19289721
最后一个错误,如您的错误:
curl:(35)错误:0A0C0103:SSL例程::内部错误
在openssl.org中找到变更量
降低了SHA1签名和基于MD5签名的安全性。这导致SSL 3、TLS 1.0、TLS 1.1和DTLS 1.0不再在默认的安全级别1工作,而是需要安全级别0。可以使用带有@SECLEVEL的密码字符串或调用SSL_CTX_set_security_level(3)来更改安全级别。这也意味着在ClientHello中缺少签名算法扩展的地方,在安全级别1的TLS 1.2中,握手就会失败。这是因为,虽然这个扩展是可选的,但如果不能提供一个扩展,就意味着OpenSSL将倒退到默认的签名算法集。这个默认集需要SHA1的可用性。
So...Change @SECLEVEL=1
to @SECLEVEL=0
一切都很好!
<html><body><h1>It works!</h1></body></html>
完整的openssl.cnf差异是:
54c54,67
< providers = provider_sect
---
> # providers = provider_sect # commented out
>
> # added
> ssl_conf = ssl_sect
>
> # added
> [ssl_sect]
> system_default = system_default_sect
>
> # added
> [system_default_sect]
> Options = UnsafeLegacyRenegotiation
> MinProtocol = TLSv1
> CipherString = DEFAULT:@SECLEVEL=0
将openssl配置文件复制到任何路径,如/path/to/openssl_tls1.cnf
应用修补程序,并添加设置OPENSSL_CONF=/path/to/openssl_tls1.cnf
注意:
UnsafeLegacyRenegotiation:允许使用不安全的遗留重新协商。相当于SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION。MinProtocol设置最低支持的SSL、TLS或DTLS版本。 当前支持的协议值是SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3、DTLSv1和DTLSv1.2。SSL和TLS边界仅适用于基于TLS的上下文,而DTLS边界仅适用于基于DTLS的上下文。可以通过一个实例设置TLS绑定,另一个实例设置DTLS绑定来重复该命令。值None适用于这两种类型的上下文,并禁用限制。密码字符串@SECLEVEL=n可以在任意点使用,将安全级别设置为n (应该是0到5之间的数字),inclusive.See 级别用于描述每个级别的含义。默认回调行为,如果应用程序不设置自己的安全回调,则使用默认回调。它的目的是提供正常的缺省值。每个级别的含义如下所述。 0级一切都是允许的。这保留了与以前版本的OpenSSL的兼容性。 级别1安全级别对应至少80位的安全性。任何提供低于80位安全性的参数都不包括在内。因此,禁止RSA、DSA和DH密钥小于1024位,ECC密钥小于160位。所有出口密码套件都是禁止的,因为它们都提供少于80位的安全性。SSL版本2是禁止的。任何使用MD5的密码套件也是被禁止的。 二级安全级别设置为112位安全性。因此,禁止RSA、DSA和DH密钥小于2048位,ECC密钥小于224位。除了一级排除外,还禁止使用RC4的任何密码套件。SSL版本3也是不允许的。压缩是禁用的。
https://stackoverflow.com/questions/72201289
复制相似问题