Не удалось установить соединение Subversion SSL и код ошибки 408
Версии
Subversion: версия 1.6.11 (r934486)
Операционная система : CentOS версии 6.8 (окончательная версия).
Фон
У меня есть множество сценариев оболочки, которые выполняются как задания cron на компьютере с CentOS. Скрипты оболочки фиксируют файлы и извлекают файлы из Subversion. Сегодня все мои скрипты начали давать сбой со следующей ошибкой
svn: ОПЦИИ «https://svn.int.mydomain.edu/eas»: не удалось установить соединение SSL: получено предупреждение SSL: ошибка в версии протокола ( )
В качестве шага устранения неполадок я выполнил следующую команду
openssl s_client -connect svn.int.mydomain.edu:443
И получил следующий вывод (слегка отредактированный)
CONNECTED(00000003)
---
Certificate chain
0 s:/OU=Domain Control Validated/CN=*.int.mydomain.edu
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
1 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
2 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
i:/C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority
3 s:/C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority
i:/C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
REDACTED
-----END CERTIFICATE-----
subject=/OU=Domain Control Validated/CN=*.int.mydomain.edu
issuer=/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
---
No client certificate CA names sent
Server Temp Key: ECDH, prime256v1, 256 bits
---
SSL handshake has read 5545 bytes and written 373 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: REDACTED
Session-ID-ctx:
Master-Key: REDACTED
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1618275549
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
HTTP/1.1 408 Request Time-out
content-length: 110
cache-control: no-cache
content-type: text/html
connection: close
<html><body><h1>408 Request Time-out</h1>
Your browser didn't send a complete request in time.
</body></html>
closed
Как вы можете видеть, я получаюHTTP/1.1 408 Request Time-out
в конце стандартного вывода. Я могу убедиться, что у меня есть доступ к https://svn.int.mydomain.eduhttps://svn.int.mydomain.edu в этом ящике, потому что отдельная установка svn работает нормально из этого ящика (установка SVN, поставляемая с плагином Jenkins).
Вопрос
Есть ли у кого-нибудь мысли о дополнительных методах устранения неполадок? Я пытался найти эту проблему, но плодотворных ответов нет.
1 ответ
Ответ 408 вызван просто тем, что openssl никогда не отправлял HTTP-запрос. Он установил TCP-соединение и SSL-подтверждение, но это все.
Важными частями ответа являются:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Verify return code: 0 (ok)
Эта часть означает, что что касается openssl, с SSL-соединением все в порядке. Сертификат действителен и поддерживается как минимум один шифр и протокол.
Но сообщение об ошибке в вашем сценарии bash предполагает, что SSL-соединение не в порядке. Я думаю, что причина в том, что сервер был обновлен и больше не поддерживает TLS 1.0 и TLS 1.1, а какой бы сценарий bash ни использовал для HTTPS-запросов, он не поддерживает TLS 1.2. Вы можете запустить тест, добавив-tls1
опция для вашей команды openssl.
Если это приводит к чему-то другому, то, скорее всего, проблема в несовместимости версий TLS.
Также возможно, что проблема заключается в несовпадении доступных шифров. Если вы все еще получаете0 (ok)
для TLS 1.0, возможно, стоит изучить шифры, доступные на сервере и клиенте.
Возможно, также стоит посмотреть последние изменения, внесенные на сервер, или просто попытаться обновить клиент. (Это выстрел в темноте, но иногда он срабатывает...)