0

Running:

svn checkout https://hostname

gives:

svn: E170013: Unable to connect to a repository at URL 'http://hostname'
svn: E120171: Error running context: An error occurred during SSL communication

Running this command:

 curl -v --insecure  https://hostname

gives

*   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

I tried to fix openssl config with "MinProtocol = TLSv1" but that doesn't help.

Help please

Ubuntu 22.04 LTS

solestate
  • 59
  • 2
  • 11

2 Answers2

4

Here is a solution to resolve Error:

curl: (35) error:0A000152:SSL routines::unsafe legacy renegotiation disabled

https://github.com/Kong/insomnia/issues/4543#issuecomment-1126771807

And then , a new Error :

curl: (35) error:0A000102:SSL routines::unsupported protocol

Just use old method like this:

https://stackoverflow.com/a/61568390/19289721

Final error like yours:

curl: (35) error:0A0C0103:SSL routines::internal error

Found the changelog in openssl.org

The security strength of SHA1 and MD5 based signatures in TLS has been reduced.

This results in SSL 3, TLS 1.0, TLS 1.1 and DTLS 1.0 no longer working at the default security level of 1 and instead requires security level 0. The security level can be changed either using the cipher string with @SECLEVEL, or calling SSL_CTX_set_security_level(3). This also means that where the signature algorithms extension is missing from a ClientHello then the handshake will fail in TLS 1.2 at security level 1. This is because, although this extension is optional, failing to provide one means that OpenSSL will fallback to a default set of signature algorithms. This default set requires the availability of SHA1.

https://www.openssl.org/docs/man3.0/man7/migration_guide.html

So...Change @SECLEVEL=1 to @SECLEVEL=0

All be fine!

<html><body><h1>It works!</h1></body></html>

Full openssl.cnf diff is :

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

Copy your openssl configure file to any path like /path/to/openssl_tls1.cnf

Apply the patch, and add setting OPENSSL_CONF=/path/to/openssl_tls1.cnf

NOTE:

UnsafeLegacyRenegotiation: permits the use of unsafe legacy renegotiation. Equivalent to SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION.

MinProtocol This sets the minimum supported SSL, TLS or DTLS version.

Currently supported protocol values are SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3, DTLSv1 and DTLSv1.2. The SSL and TLS bounds apply only to TLS-based contexts, while the DTLS bounds apply only to DTLS-based contexts. The command can be repeated with one instance setting a TLS bound, and the other setting a DTLS bound. The value None applies to both types of contexts and disables the limits.

The cipher string @SECLEVEL=n can be used at any point to set the security level to n, which should be a number between zero and five, inclusive.See SSL_CTX_set_security_level for a description of what each level means.

DEFAULT CALLBACK BEHAVIOUR If an application doesn't set its own security callback the default callback is used. It is intended to provide sane defaults. The meaning of each level is described below.

Level 0 Everything is permitted. This retains compatibility with previous versions of OpenSSL.

Level 1 The security level corresponds to a minimum of 80 bits of security. Any parameters offering below 80 bits of security are excluded. As a result RSA, DSA and DH keys shorter than 1024 bits and ECC keys shorter than 160 bits are prohibited. All export cipher suites are prohibited since they all offer less than 80 bits of security. SSL version 2 is prohibited. Any cipher suite using MD5 for the MAC is also prohibited.

Level 2 Security level set to 112 bits of security. As a result RSA, DSA and DH keys shorter than 2048 bits and ECC keys shorter than 224 bits are prohibited. In addition to the level 1 exclusions any cipher suite using RC4 is also prohibited. SSL version 3 is also not allowed. Compression is disabled.

1

Try with --trust-server-cert , with an understanding that you are bypassing a certificate check.

SVN doc: https://svnbook.red-bean.com

Nic3500
  • 8,144
  • 10
  • 29
  • 40