Как проверить доступность сервера по SSL
Необходимо проверить доступность сервера, который работает как SSL-туннель.
Через python + icmplib отправлялся пинг - но сервер на него не отвечает:
from icmplib import ping
host = ping('ПРОВЕРЯЕМЫЙ СЕРВЕР', count=10, interval=0.2)
print(host.is_alive) # возвращается False
На get-сообщения через requests сервер тоже никак не отвечает, даже ошибку не возвращает. Видимо он настроен на работу исключительно как SSL-туннель, что мешает проверять его доступность.
Есть ли какие-то ещё способы обратиться с помощью python к SSL-туннелю?
Можно попробовать на более низком уровне установить SSL-соединение с сервером и получить его параметры. Если соединение устанавливается, то значит и сервер доступен:
import socket
import ssl
def is_ssl_alive(host, port):
context = ssl.create_default_context()
try:
with socket.create_connection((host, port)) as sock:
with context.wrap_socket(sock, server_hostname=host) as ssock:
# При наличии успешного соединения по SSL можно получить его версию
ssock.version()
return True
except OSError:
return False
print(is_ssl_alive('ru.stackoverflow.com', '443'))