Мы используем самоподписанный сертификат для ряда балансировщиков нагрузки, конечные точки используют самоподписанные сертификаты.
При тестировании конечных точек напрямую с помощью CURL мы периодически получаем ошибки SSL Connect (код 35)
Вот пример результата неудачной попытки:
curl --insecure example.com/index.html
- Пробую 9773...
- TCP_NODELAY установлен
- Подключено к example.com (10.8.49.98) порт 9773 (#0)
- ALPN, предлагая h2
- ALPN, предлагающий http/1.1
- успешно установлены местоположения проверки сертификата:
- CAfile: /etc/ssl/cert.pem CApath: нет
- TLSv1.2 (OUT), TLS-рукопожатие, приветствие клиента (1):
- TLSv1.2 (IN), TLS-рукопожатие, приветствие сервера (2):
- TLSv1.2 (IN), TLS-рукопожатие, Сертификат (11):
- TLSv1.2 (IN), TLS-рукопожатие, обмен ключами сервера (12):
- TLSv1.2 (IN), TLS-рукопожатие, сервер завершил работу (14):
- TLSv1.2 (OUT), TLS-рукопожатие, обмен ключами клиента (16):
- TLSv1.2 (OUT), изменение шифра TLS, изменение спецификации шифра (1):
- TLSv1.2 (OUT), TLS-рукопожатие, Завершено (20):
- LibreSSL SSL_connect: SSL_ERROR_SYSCALL при подключении к example.com
- Закрытие соединения 0 curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL в соединении с example.com:9773
Это связано с неправильной настройкой? Проблема с производительностью сервера? Сетью?
Сервер — Tomcat 8.
Команда, используемая для создания сертификата:
openssl req -x509 -newkey rsa:4096 -nodes -keyout private.pem -out public.crt -days 365 -subj '/CN=example.com'
Соответствующая конфигурация Tomcat SSL:
<Connector port="9773" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
compression="on"
address="0.0.0.0"
>
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig
protocols="TLSv1.2"
>
<Certificate
certificateFile="/ssl/certs/public.crt"
certificateKeyFile="/ssl/certs/private.pem"
/>
</SSLHostConfig>
</Connector>