Sto creando un server Go TCP (NON http/s) e sto cercando di configurarlo per utilizzare SSL. Ho un certificato SSL gratuito StartCom che sto cercando di utilizzare per realizzare questo. Il mio codice del server è simile al seguente:Configurazione certificato socket SSL SSL Golang
cert, err := tls.LoadX509KeyPair("example.com.pem", "example.com.key")
if err != nil {
fmt.Println("Error loading certificate. ",err)
}
trustCert, err := ioutil.ReadFile("sub.class1.server.ca.pem")
if err != nil {
fmt.Println("Error loading trust certificate. ",err)
}
validationCert, err := ioutil.ReadFile("ca.pem")
if err != nil {
fmt.Println("Error loading validation certificate. ",err)
}
certs := x509.NewCertPool()
if !certs.AppendCertsFromPEM(validationCert) {
fmt.Println("Error installing validation certificate.")
}
if !certs.AppendCertsFromPEM(trustCert) {
fmt.Println("Error installing trust certificate.")
}
sslConfig := tls.Config{RootCAs: certs,Certificates: []tls.Certificate{cert}}
service := ":5555"
tcpAddr, error := net.ResolveTCPAddr("tcp", service)
if error != nil {
fmt.Println("Error: Could not resolve address")
} else {
netListen, error := tls.Listen(tcpAddr.Network(), tcpAddr.String(), &sslConfig)
if error != nil {
fmt.Println(error)
} else {
defer netListen.Close()
for {
fmt.Println("Waiting for clients")
connection, error := netListen.Accept()
Ho provato il passaggio intorno l'ordine dei certs, esclusi alcuni certs, ecc ma l'uscita dal openssl s_client -CApath /etc/ssl/certs/ -connect localhost:5555
rimane essenzialmente la stessa, verify error:num=20:unable to get local issuer certificate
. Vedere here per l'output completo. Mi sembra che stia facendo qualcosa di sbagliato con i certificati intermedi, ma non ho idea di cosa. Ho lavorato su questo per alcuni giorni, un sacco di googling e SO'ing, ma nulla sembrava adattarsi alla mia situazione. Ho impostato molti certificati in Apache e HAProxy, ma questo mi ha davvero bloccato.
Non utilizzare 'error' come valore di errore, poiché maschera il nome dell'interfaccia incorporata. – JimB
Grazie, lo correggerò! –