Vai al contenuto
🛠️ToolsShed

Decoder Certificato SSL

Analizza e decodifica certificati SSL/TLS in formato PEM

Informazioni sullo strumento

Un decodificatore di certificati SSL è uno strumento essenziale per chiunque lavori con server web, sicurezza o crittografia. Ti consente di ispezionare il contenuto dei certificati SSL/TLS in formato PEM senza aver bisogno di strumenti da riga di comando o software specializzato. Caricando o incollando un certificato, puoi visualizzare istantaneamente tutte le informazioni codificate—come l'emittente, il soggetto, il periodo di validità, i dettagli della chiave pubblica e le impronte digitali—che altrimenti rimarebbero incomprensibili. Questa trasparenza è fondamentale per verificare l'autenticità del certificato, risolvere i problemi di connessione e garantire che la tua infrastruttura soddisfi i requisiti di conformità alla sicurezza.

Per utilizzare il decodificatore di certificati SSL, incolla semplicemente il tuo certificato in formato PEM (il blocco tra -----BEGIN CERTIFICATE----- e -----END CERTIFICATE-----) nel campo di input. Lo strumento analizza automaticamente il certificato e visualizza tutti i dati incorporati in un formato leggibile da esseri umani, inclusa l'organizzazione emittente, il soggetto del certificato, le date di emissione e scadenza, il numero seriale, l'algoritmo di firma e la chiave pubblica del certificato. Che tu sia un amministratore di sistema che gestisce più domini, uno sviluppatore che testa un ambiente di staging o un professionista della sicurezza che controlla l'infrastruttura, questo strumento elimina la necessità di gestire comandi OpenSSL o altre utility esterne.

Il decodificatore di certificati SSL funziona interamente nel tuo browser—nessun dato viene inviato a nessun server, quindi i tuoi certificati rimangono privati e sicuri. Questo lo rende particolarmente utile per gestire certificati sensibili in ambienti limitati. Tieni presente che lo strumento legge solo certificati in formato PEM; se hai un certificato in formato DER (binario), dovrai convertirlo in PEM per primo. Utilizzare regolarmente questo strumento come parte del tuo flusso di lavoro di gestione dei certificati ti aiuta a rilevare le date di scadenza, verificare i dettagli dell'emittente e prevenire le lacune di sicurezza prima che diventino problemi.

Domande Frequenti

Implementazione del Codice

from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from datetime import datetime, timezone
import base64, textwrap

def decode_pem_certificate(pem: str) -> dict:
    cert = x509.load_pem_x509_certificate(pem.encode(), default_backend())
    now  = datetime.now(timezone.utc)

    # Subject / Issuer fields
    def dn(name) -> dict:
        return {attr.oid._name: attr.value for attr in name}

    # Subject Alternative Names
    try:
        san_ext = cert.extensions.get_extension_for_class(x509.SubjectAlternativeName)
        san = san_ext.value.get_values_for_type(x509.DNSName)
    except x509.ExtensionNotFound:
        san = []

    # Key usage
    try:
        ku = cert.extensions.get_extension_for_class(x509.KeyUsage).value
        key_usage = [
            name for name, ok in [
                ("digitalSignature", ku.digital_signature),
                ("keyEncipherment", ku.key_encipherment),
                ("keyCertSign", ku.key_cert_sign),
                ("cRLSign", ku.crl_sign),
            ] if ok
        ]
    except Exception:
        key_usage = []

    return {
        "subject":          dn(cert.subject),
        "issuer":           dn(cert.issuer),
        "serial":           hex(cert.serial_number),
        "not_before":       cert.not_valid_before_utc.isoformat(),
        "not_after":        cert.not_valid_after_utc.isoformat(),
        "is_expired":       cert.not_valid_after_utc < now,
        "days_remaining":   (cert.not_valid_after_utc - now).days,
        "signature_alg":    cert.signature_hash_algorithm.name,
        "public_key_type":  cert.public_key().__class__.__name__,
        "san":              san,
        "key_usage":        key_usage,
        "is_ca":            cert.extensions.get_extension_for_class(
                                x509.BasicConstraints
                            ).value.ca if True else False,
    }


if __name__ == "__main__":
    import sys, json
    pem = open(sys.argv[1]).read() if len(sys.argv) > 1 else ""
    if pem:
        info = decode_pem_certificate(pem)
        print(json.dumps(info, indent=2))

Comments & Feedback

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