Перейти к содержимому

Калькулятор срока действия сертификатов

Вычисляет дни до истечения срока действия SSL/TLS сертификатов.

Об этом инструменте

Сертификаты SSL и TLS необходимы для защиты веб-сайтов и приложений, но они истекают в определенную дату. Калькулятор истечения сертификатов помогает отслеживать дату истечения ваших сертификатов, предоставляя заблаговременное уведомление, чтобы вы могли обновить их до истечения срока и избежать прерывания услуг. Этот инструмент критически важен для системных администраторов, инженеров DevOps и владельцев веб-сайтов, которым необходимо управлять несколькими сертификатами в своей инфраструктуре.

Чтобы использовать калькулятор, просто введите дату истечения своего сертификата, и инструмент мгновенно покажет количество оставшихся дней до истечения, точную дату и четкий статус предупреждения. Вы можете отслеживать несколько сертификатов, вводя каждый отдельно, что облегчает создание графика обновления. Инструмент работает полностью в вашем браузере, поэтому информация о сертификате никогда не покидает ваше устройство.

Истечение сертификата является частой причиной перерывов в обслуживании, особенно для веб-сайтов, API и почтовых серверов. Используя этот калькулятор для активного мониторинга своих сертификатов, вы можете заранее спланировать обновления и избежать дорогостоящих простоев. Инструмент полезен для всех, кто управляет инфраструктурой SSL/TLS, от малых предприятий с одним сертификатом до крупных корпораций со сотнями.

Часто задаваемые вопросы

Реализация кода

import ssl
import socket
from datetime import datetime, timezone

def get_cert_expiry(hostname: str, port: int = 443) -> dict:
    """Fetch TLS certificate expiry info for a hostname."""
    context = ssl.create_default_context()
    with socket.create_connection((hostname, port), timeout=5) as sock:
        with context.wrap_socket(sock, server_hostname=hostname) as ssock:
            cert = ssock.getpeercert()

    not_after = datetime.strptime(cert['notAfter'], '%b %d %H:%M:%S %Y %Z')
    not_after = not_after.replace(tzinfo=timezone.utc)
    now = datetime.now(timezone.utc)
    days_remaining = (not_after - now).days

    return {
        "hostname": hostname,
        "expires": not_after.strftime('%Y-%m-%d'),
        "days_remaining": days_remaining,
        "status": "expired" if days_remaining < 0
                  else "critical" if days_remaining < 14
                  else "warning" if days_remaining < 30
                  else "good",
        "subject": dict(x[0] for x in cert.get('subject', [])),
        "issuer": dict(x[0] for x in cert.get('issuer', [])),
    }

# Example
result = get_cert_expiry("example.com")
print(f"Expires: {result['expires']}")
print(f"Days remaining: {result['days_remaining']}")
print(f"Status: {result['status']}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.