Wir werden das Thema SSL sicher noch häufiger behandeln, aber heute beschränken wir uns auf einen kleinen Schummelzettel - für alle, die sich nicht mit Spezialfällen konfrontiert sehen, sondern einfach vor der (meist jährlichen) Aufgabe stehen, ein SSL Zertifikat zu tauschen.
Die verschiedenen Dateien erklären sich durch den Ablauf wie ein Zertifikat ausgestellt wird:
Rein technisch gesehen nicht, man kann auch mit einer bestehenden Schlüsseldatei ein neues CSR erstellen oder sogar das alte CSR wiederverwenden, wenn sich die Domain-/Firmendaten nicht geändert haben. Aus Sicherheitsgründen empfehlen wir immer auch den Schlüssel neu zu erstellen (und praktizieren das bei unseren Verlängerungen auch so).
Die kurze Antwort - macht nichts. .cer, .crt oder .pem sind alles gängige Endungen für Base64 mit ASCII-Zeichen kodierte X.509-Zertifikate, wie sie zum Beispiel von Apache, nginx oder postfix verwendet werden.
Ein Client soll ohne zusätzliche Nachfragen die Gültigkeit eines Zertifikats prüfen können. Daher muss immer auch die gesamte Unterschriftenkette, mit Ausnahme des root Zertifikats selbst, zur Verfügung gestellt werden. Die root Zertifikate selbst sind im Client hinterlegt, entweder im Betriebssystem oder etwa im Browser-eigenen Zertifikats-Speicher, wodurch es dem Client überhaupt erst möglich ist, offiziell validierte Zertifikate zu erkennen.
Je nach Service kann man die Zertifikatskette entweder als extra Datei angeben (zum Beispiel unter Apache "SSLCertificateChainFile") oder man kopiert das Domain-Zertifikat und seine Kette in eine Datei zusammen, und bindet diese ein.
Ein nützliches Tool zum Überprüfen ob die Kette vollständig enthalten ist findet sich bei ssllabs.com.
curl zeigt das Problem auch auf:
curl: (60) SSL certificate problem: unable to get local issuer certificate
Nur Aussteller, Gültigkeitsdatum und alternative Namen ausgeben:
$ openssl x509 -in domain.at.crt -dates -subject -issuer -ext subjectAltName -noout notBefore=Jan 1 00:00:00 2021 GMT notAfter=Jan 1 23:59:59 2022 GMT subject=CN = domain.at issuer=C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA X509v3 Subject Alternative Name: DNS:domain.at, DNS:www.domain.at
Oder eine vollständigere Ausgabe mit Fingerprints:
$ openssl x509 -in domain.at.crt -noout -text
Domainname und Organisationsdaten ausgeben:
$ openssl req -noout -text -in domain.at.csr
Certificate Request:
Data:
Version: 1 (0x0)
Subject: C = AT, ST = XXX, L = XXX, O = Organisation, CN = domain.at
Subject Public Key Info:
(...)
Die Integrität des Keys prüfen:
$ openssl rsa -in star.toscom.at.key -check -noout
RSA key ok
Man kann den MD5 Hash vergleichen, um zu prüfen, ob die Dateien zusammengehören. Das empfiehlt sich immer, wenn es sein kann, dass Dateien durcheinander gekommen sind, oder wenn sie getrennt voneinander erstellt wurden - passen Zertifikat und Key nicht zusammen, startet der betroffene Service nicht!
$ openssl x509 -noout -modulus -in domain.at.crt | openssl md5
(stdin)= f0d93054985294272dc75cf661ae6519
$ openssl rsa -noout -modulus -in domain.at.key | openssl md5
(stdin)= f0d93054985294272dc75cf661ae6519
$ openssl req -noout -modulus -in domain.at.csr | openssl md5
(stdin)= f0d93054985294272dc75cf661ae6519
Bei HTTPS ist das natürlich per Browser möglich (shift-reload bzw. Incognito-Modus nicht vergessen!), bei Mail- oder FTP-Servern ist nmap eine bequeme Möglichkeit. Es muss nicht berücksichtigt werden, ob STARTTLS zum Einsatz kommt und es liefert kompakten Output:
$ nmap --script ssl-cert -p 25 mail.domain.at
(...)
PORT STATE SERVICE
25/tcp open smtp
| ssl-cert: Subject: commonName=mail.domain.at
| Subject Alternative Name: DNS:mail.domain.at
| Issuer: commonName=R3/organizationName=Let's Encrypt/countryName=US
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2021-01-01T12:04:48
| Not valid after: 2022-01-01T12:04:48
Mit openssl s_client ist die Abfrage auch möglich, aber zum Beispiel muss man für das Ablaufdatum den Output dann nochmals durch openssl pipen:
$ openssl s_client -showcerts -connect mail.domain.at:25 -starttls smtp | openssl x509 -noout -dates
Und als Bonus-Schummelzettel hier noch die gängigsten Ports:
HTTPS 443, SMTP TLS 587, SMTP SSL 465, POP3 SSL 995, IMAP StartTLS 143, IMAP SSL 993, FTPS 21.
Das müsste man natürlich detailliert Troubleshooten, aber in der Praxis decken hier zwei Fragen fast alle Problemfälle ab:
Seit 2003 machen wir nicht nur Webentwicklern das Leben leichter. Als leidenschaftliche Techniker lieben wir gute Lösungen und als 100% remote Company effiziente Abläufe und Kommunikation.
Lernen Sie uns, unsere Partner und unsere Kunden kennen.
toscom GmbH | Breiteneckergasse 32, 1230 Wien | +43 720 11 66 06 | office@toscom.at
Alle Preisangaben verstehen sich exkl. MwSt.
Aus Gründen der besseren Lesbarkeit wird bei Personenbezeichnungen und personenbezogenen Hauptwörtern auf dieser Website die männliche Form verwendet. Entsprechende Begriffe gelten im Sinne der Gleichbehandlung grundsätzlich für alle Geschlechter. Die verkürzte Sprachform hat nur redaktionelle Gründe und beinhaltet keine Wertung.
It appears you have deactived JavaScript in your browser. This feature is only available with JavaScript turned on. If you don't want your data to be collected, you can still turn on Do Not Track in your browser which is a general setting and is being respected by our Matomo installation.