Как проверить доступность сервера по SSL

Как проверить доступность сервера по 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'))




Report Page