Назад | Перейти на главную страницу

Невозможно выполнить квитирование SSL с одним сервером из образа GCE Ubuntu 16.04.1 (но работает везде)

Я пытаюсь подключиться к swift.ca-ns-1.clouda.ca:8443 через SSL. Я могу подключиться к этому серверу с нескольких других машин, включая другие свежие ящики 16.04.1 (не на GCE), и я подключаюсь к нему из других экземпляров GCE, которые не являются Ubuntu 16.04.1, но когда я пытаюсь подключиться с любого Ubuntu 16.04. 1 экземпляр GCE не удается установить соединение SSL. Ниже я опубликовал пример вывода openssl. Обратите внимание, что я могу подключиться к любому другому серверу SSL, который я пробовал. Сами CloudA разобраться не смогли. Любые идеи?

% openssl s_client -connect swift.ca-ns-1.clouda.ca:8443
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1475846555
Timeout : 300 (sec)
Verify return code: 0 (ok)
---

ОБНОВИТЬ: Я подтвердил, что это происходит только в зонах us-central1 (также затрагивается любая субаренда). Создание экземпляра в us-east1 отлично работает.

напишите: errno = 104
...
Рукопожатие SSL прочитало 0 байт и записало 305 байт

Это означает, что

  • TCP-соединение с сервером прошло успешно
  • openssl s_client попытался запустить рукопожатие TLS, отправив ClientHello
  • сервер или какой-то промежуточный сервер (брандмауэр, балансировщик нагрузки ...) вызвали RST (ошибка 104 - ECONNRESET) TCP-соединения (возможно) в ответ на сообщение ClientHello

Из этой информации невозможно сказать, что вызвало RST и какая система его отправила. Но можно попытаться сузить его некоторыми экспериментами:

  • Убедитесь, что все версии 16.04.1 (рабочие и нерабочие) используют одну и ту же версию openssl. Вызов openssl version недостаточно, так как бэкпорт дистрибутивов меняется на более старые версии, а номер версии не меняется. Используйте вместо openssl version -a и сравните время сборки. Если они не совпадают, убедитесь, что они совпадают, и повторите попытку.
  • Убедитесь, что вы используете один и тот же IP-адрес для цели во всех системах, т.е. попробуйте использовать s_client вместо этого с известным хорошим целевым IP.
  • Проверьте, есть ли у сервера проблемы с исходным IP-адресом, путем туннелирования соединения (например, с OpenSSH), чтобы оно происходило из заведомо исправной системы. Если вам не повезло, IP-адрес вашей системы находится в каком-то черном списке из-за действий предыдущего владельца.

У меня была аналогичная проблема. Это было решено добавлением опции имени сервера. Например, если вы подключаетесь к gmail: openssl s_client -connect imap.gmail.com:993 -servername gmail.com

Видеть https://en.wikipedia.org/wiki/Server_Name_Indication Больше подробностей.