Hin und wieder gibt es ein Problem bei der Zertifikatserneuerung mittels Lets‘ Encrypt und dem laufendem Mail Transfer Agent (MTA) Postfix bzw. dem IMAP Server Dovecot. Ebenso kann man auch das Zertifikat für den FTP Dienst prüfen. Nachfolgend zeige ich auf, wie man das Zertifikat per Linux Bash und OpenSSL abfragen und prüfen kann.
Nachfolgend ist <mail.example.tdl> durch den abzufragenden Mailserver zu ersetzen.
Mailserver und übliche Ports
Dies sind die üblichen Ports und deren Verschlüsselungen für den Mailverkehr:
Aktion | Protokoll | Verschlüsselung | Port |
Senden | |||
SMTP | keine | 25 | |
SMTP | TLS | 25 | |
SMTPS | SSL | 465 | |
Empfangen | |||
POP3 | keine | 110 | |
POP3 | TLS | 110 | |
POP3S | SSL | 995 | |
IMAP | keine | 143 | |
IMAP | TLS | 143 | |
IMAPS | SSL | 993 |
IMAP mittels SSL und Port 993 – Dovecot
Um die Abfrage nach dem Zertifikat zu starten folgendes in der Konsole eingeben:
# openssl s_client -showcerts -connect <mail.example.tdl>:993 -servername <mail.example.tdl>
Ist dies erfolgreich, sollte folgendes zu sehen sein:
Certificate chain
0 s:CN = mail.example.tdl
i:C = US, O = Let's Encrypt, CN = R3
-----BEGIN CERTIFICATE-----
.....
Server certificate
subject=CN = mail.example.tdl
.....
read R BLOCK
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SPECIAL-USE XLIST LITERAL+ AUTH=PLAIN AUTH=LOGIN] Dovecot (Debian) ready.
POP3 mittels SSL und Port 995 – Dovecot
Die Abfrage sieht nun wie folgt aus:
# openssl s_client -showcerts -connect <mail.example.tdl>:995 -servername <mail.example.tdl>
Eine positive Rückmeldung dann wie folgt:
Certificate chain
0 s:CN = mail.example.tdl
i:C = US, O = Let's Encrypt, CN = R3
-----BEGIN CERTIFICATE-----
....
Server certificate
subject=CN = mail.example.tdl
issuer=C = US, O = Let's Encrypt, CN = R3
....
read R BLOCK
+OK Dovecot (Debian) ready.
Ein abgelaufenes Zertifikat wird wie folgt angezeigt:
Server certificate
subject=CN = mail.example.tdl
issuer=C = US, O = Let's Encrypt, CN = R11
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3648 bytes and written 394 bytes
Verification error: certificate has expired
SMTP mittels SSL und Port 465 – Postfix
Die Abfrage ist wie folgt:
# openssl s_client -showcerts -connect <mail.example.tdl>:465 -servername <mail.example.tdl>
Die erfolgreiche Rückmeldung:
Certificate chain
0 s:CN = mail.example.tdl
i:C = US, O = Let's Encrypt, CN = R3
-----BEGIN CERTIFICATE-----
....
Server certificate
subject=CN = mail.example.tdl
issuer=C = US, O = Let's Encrypt, CN = R3
....
read R BLOCK
220 mail.example.tdl ESMTP Postfix
SMTP mittels TLS/StartTLS und Port 25 oder 587
Die Abfrage hier am Beispiel von Port 25:
# openssl s_client -starttls smtp -showcerts -connect <mail.example.tdl>:25 -servername pitvsrv04.purwin-it.de
Das Ergebnis:
Certificate chain
0 s:CN = mail.example.tdl
i:C = US, O = Let's Encrypt, CN = R3
-----BEGIN CERTIFICATE-----
....
Server certificate
subject=CN = mail.example.tdl
issuer=C = US, O = Let's Encrypt, CN = R3
....
....
250 CHUNKING
....
read R BLOCK
quit
221 2.0.0 Bye
FTP StartTLS Zertifikat auf Port 21 abfragen
Nachfolgend frage ich das FTP Zertifikat ab und lasse mir das Enddatum der Gültigkeit und den Fingerprint für SHA256 anzeigen.
# openssl s_client -showcerts -connect <ftp.example.tdl>:21 -starttls ftp -servername <ftp.example.tdl> |openssl x509 -enddate -noout -fingerprint -sha256
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R11
...
notAfter=Nov 5 00:03:48 2024 GMT
SHA256 Fingerprint=E2:4A:3C:XX:E3:4E:71:08:D3:44:78:C1:F2:XX:A6:AD:10:3B:CA:XX:05:6A:57:DA:66:8B:43:XX:C0:9A:E1:1B
Zertifikat Ablaufdatum anzeigen
Um sich das Ablaufdatum der Zertifikate anzeigen zu lassen einfach folgendes eingeben, den Port entsprechend tauschen:
# openssl s_client -showcerts -connect <mail.example.tdl>:993 -servername <mail.example.tdl> | openssl x509 -enddate -noout
Die Ausgabe sieht dann z.B. wie folgt aus:
notAfter=Jul 23 06:42:30 2022 GMT
Zertifikat SHA1 und SHA256 Fingerprint anzeigen
Um ein Zertifikat zu prüfen kann man sich den Fingerprint anzeigen und SHA1 und SHA256 anzeigen.
# hinter noout für SHA1 folgendes hinzufügen
-fingerprint
# hinter noout für SHA256 folgendes hinzufügen
-fingerprint -sha256
Thats it … Have Fun!
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.
danke gut zusammengefasst