Go: leggere le informazioni del certificato SSL di un sito web

Go: leggere le informazioni del certificato SSL di un sito web

I certificati SSL (Secure Socket Layer) sono uno strumento cruciale per garantire la sicurezza delle comunicazioni su Internet. Vengono utilizzati per crittografare i dati tra il tuo browser web e un server remoto, garantendo che le informazioni trasmesse siano al sicuro da occhi indiscreti. Quando visiti un sito web, il tuo browser verifica il certificato SSL del sito per assicurarsi che sia valido e legittimo. In questo articolo, esploreremo come è possibile utilizzare il linguaggio di programmazione Go per leggere le informazioni principali di un certificato SSL da un sito remoto.

Per iniziare, dovrai importare le librerie necessarie per lavorare con certificati SSL in Go. La libreria principale che useremo è crypto/tls. Puoi farlo nel tuo file Go con il seguente import:


package main

import (
	"crypto/tls"
	"fmt"
	"net"
)

Per ottenere il certificato SSL di un sito remoto, devi stabilire una connessione TCP con il server remoto utilizzando il suo indirizzo e la porta appropriata. Puoi farlo con il seguente codice:


func main() {
	// Indirizzo e porta del server remoto
	serverAddr := "example.com:443"

	// Connessione TCP al server
	conn, err := net.Dial("tcp", serverAddr)
	if err != nil {
		fmt.Println("Errore nella connessione al server:", err)
		return
	}
	defer conn.Close()

	// Inizializza una connessione TLS
	config := tls.Config{ServerName: "example.com"}
	tlsConn := tls.Client(conn, &config)

	// Handshake TLS
	err = tlsConn.Handshake()
	if err != nil {
		fmt.Println("Errore durante l'handshake TLS:", err)
		return
	}

	// Ora puoi leggere il certificato SSL
}

Assicurati di sostituire "example.com" con il nome del sito web di cui desideri ottenere il certificato SSL.

Una volta stabilita la connessione TLS con il server remoto, puoi leggere le informazioni del certificato SSL. Il certificato SSL è disponibile come parte della connessione TLS e puoi accedere alle sue informazioni in questo modo:


    // Leggi il certificato SSL
    certificate := tlsConn.ConnectionState().PeerCertificates[0]

    // Stampare le informazioni principali del certificato
    fmt.Println("Nome comune (Common Name):", certificate.Subject.CommonName)
    fmt.Println("Emittente (Issuer):", certificate.Issuer.CommonName)
    fmt.Println("Scadenza (Valid until):", certificate.NotAfter)

Questo codice legge il certificato SSL dal server remoto e stampa alcune informazioni chiave come il nome comune (Common Name) del certificato, l'emittente (Issuer) e la data di scadenza.

Conclusione

In questo articolo, abbiamo visto come utilizzare Go per leggere le informazioni principali di un certificato SSL da un sito web remoto. Questo è utile per scopi di debugging, monitoraggio della sicurezza e per ottenere informazioni sull'autenticità di un sito web. Assicurati sempre di utilizzare queste informazioni in modo responsabile e rispettoso della privacy e della sicurezza online.

Torna su