21.07.2021
Stunnel – Problem: Fehlermeldung SSL3_GET_CLIENT_CERTIFICATE:no certificate returned
Fehlermeldungen: SSL3_GET_CLIENT_CERTIFICATE:no certificate returned / SSL3_READ_BYTES:sslv3 alert certificate unknown / SSL3_READ_BYTES:tlsv1 alert unknown ca
Problem
Folgende Fehlermeldungen bei verify=3 (Client und CA Zertifikat werden geprüft) auf Server:
2013.08.11 22:59:23 LOG4[23659:4148530032]: VERIFY ERROR ONLY MY: no cert for /CN=office.example.com
2013.08.11 22:59:23 LOG3[23659:4148530032]: SSL_accept: 140890B2: error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned
oder
2017.01.26 17:40:50 LOG5[12531]: Service [my-stunnel-server] accepted connection from 192.168.1.1:38596
2017.01.26 17:40:51 LOG4[12531]: CERT: Verification error: self signed certificate in certificate chain
2017.01.26 17:40:51 LOG4[12531]: Rejected by CERT at depth=1: CN=CA: ca.example.com
2017.01.26 17:40:51 LOG3[12531]: SSL_accept: 140890B2: error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned
2017.01.26 17:40:51 LOG5[12531]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
und auf dem Client im stunnel oder syslog:
2013.08.11 23:28:01 LOG3[32286:139742708045568]: SSL_connect: 14094416: error:14094416:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate unknown
oder
2017.01.26 17:40:51 LOG3[18751:140428317533952]: SSL_connect: 14094418: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca
Analyse
- Prüfen der relevanten Zertifikate in den stunnel Configs, um zu schauen, ob diese noch gültig sind (Zertifikate finden sich in der stunnel Config z.B. unter "cert" oder "CAfile")
openssl x509 -in <Zertifikatdatei>.pem -text | grep -i "Not After"
- Prüfen, welches Hash das Zertifikat hat: Zum Testen kann auch ein Hash des verwendeten Zertifikats erstellt werden und so geprüft werden, ob es auf der anderen Seite korrekt abgelegt ist, falls es z.B. von Puppet automatisch exportiert wird:
openssl x509 -noout -in <Zertifikatdatei>.pem -hash
Das Zertifikat sollte auf dem stunnel Server im CAPath korrekt gegen den Hash Wert verlinkt sein.
ls -la <CAPath>
lrwxrwxrwx 1 root root 24 Jan 10 2020 e5c62e36.0 -> office.example.com.pem
Lösung
- Bei ungültigem Zertifikat: Das Zertifikat muss erneuert werden. Das ist nicht Bestandteil dieses Artikels. Neues Zertifikat einspielen und stunnel auf beiden Seiten neustarten.
- Falsche Hash Werte: Es sollte in der Konfiguration des Servers ein CAPath angegeben sein. In diesem CAPath müssen die Zertifikate der sich verbindenden Clients und das CA Zertifikat verlinkt als Hash liegen. Das kann durch ein Kopieren des Zertifikat PEMs und Ausführung von c_rehash erledigt werden:
cd <Verzeichnis>
ls -la
c_rehash .
ls -la
Hash Links sollten nun aktuell sein. - Neustart des stunnels: Wenn die Zertifikate bereits korrekt hashed sind, könnte es sein, dass der stunnel nach Erneuerung der Hashes nicht neugestartet wurde. Tunnel auf beiden Seiten neustarten.