Kennen Sie schon unseren Podcast? Thomas Bahn diskutiert mit Gästen aus Wirtschaft und Wissenschaft über Künstliche Intelligenz und Chatbots. Jetzt reinhören

X509-Zertifikat eines internen SMTP-Servers herausfinden

von Thomas,
assono GmbH, Standort Kiel,

Manche Anforderungen werden in der Kombination zu Herausforderungen.

Folgendes Szenario: Windows-Rechner bei einem Kunden. Auf dem soll ein Java-Programm laufen (der Chatbot-Server, den ich gestern als Dienst verpackt habe), der E-Mails an einen internen SMTP-Server schickt. Weil dabei auch in der Regel personenbezogene Daten in den E-Mails stehen können, soll der Versand - obwohl intern - verschlüsselt laufen. Der interne SMTP-Server lauscht auf Port 25/tcp und schaltet per STARTTLS auf die verschlüsselte Verbindung um.

So weit, so gut.

Leider verweigert das Java-Programm die Verbindung mit einer javax.net.ssl.SSLHandshakeException. ... PKIX path building failed ... unable to find valid certification path to requested target.

Also kurz mal einen Blick auf das Zertifikat werfen...

Aber woher nehmen? Bei HTTPS ist es einfach: Man kann einen Browser auf den Server hetzen, der einem dann das Zertifikat anzeigen und, wenn gewünscht, sogar abspeichern lässt.

Für SMTP geht das so nicht. Leicht erschwerend kommt dazu, dass erst die Kommunikation aufgebaut und dann per STARTTLS die Verschlüsselung aktiviert werden muss, bevor der Server das Zertifikat überhaupt ins Spiel bringt.

Hatte ich schon erwähnt, dass es ein Windows-Rechner war?

Lösung: Linux installieren - zumindest ein ganz klein wenig davon: Cygwin! Und in Cygwin danach OpenSSL.

Die nächsten Schritte kommen vielen Linux-Administratoren vielleicht bekannt vor:

openssl s_client -connect mail.buhck.de:25 -starttls smtp
CONNECTED(00000004)
depth=0 CN = ********
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = ********
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:CN = ********
	 i:CN = ********
---
Server certificate
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
subject=...

Ich packe den Teil zwischen -----BEGIN CERTIFICATE----- und -----END CERTIFICATE----- in eine PEM-Datei und schaue sie mir noch einmal an:

openssl x509 -text -noout -in Zertifikat.pem

Certificate:
		Data:
				Version: 3 (0x2)
				Serial Number:
						37:5c:d9:5f:97:f2:25:b4:40:0c:69:c3:1f:71:e9:4f
				Signature Algorithm: sha256WithRSAEncryption
				Issuer: CN = ********
				Validity
						Not Before: Jan 21 11:59:06 2021 GMT
						Not After : Jan 21 11:59:06 2026 GMT
				Subject: CN = ********
				Subject Public Key Info:
						Public Key Algorithm: rsaEncryption
								RSA Public-Key: (2048 bit)
...
				X509v3 extensions:
						X509v3 Key Usage: critical
								Digital Signature, Key Encipherment
						X509v3 Subject Alternative Name:
								DNS:********, DNS:********.example.local
						X509v3 Extended Key Usage:
								TLS Web Server Authentication
						X509v3 Basic Constraints: critical
								CA:FALSE
...

Jetzt habe ich alles, was ich brauche. Ich sehe Gültigkeit, Herausgeber (in diesem Fall selbst-signiert), Verwendungszwecke, SANs usw.

Fachbeitrag Administration Entwicklung Für Entwickler

Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de

Sie haben Interesse an diesem Thema?

Gerne bieten wir Ihnen eine individuelle Beratung oder einen Workshop an.

Kontaktieren Sie uns

Weitere interessante Artikel

Sie haben Fragen?

Wenn Sie mehr über unsere Angebote erfahren möchten, können Sie uns jederzeit kontaktieren. Gerne erstellen wir eine individuelle Demo für Sie.

assono GmbH

Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223 Schwentinental

Standort Hamburg
assono GmbH
Bornkampsweg 58
22761 Hamburg

Telefonnummern:
Zentrale: +49 4307 900 407
Vertrieb: +49 4307 900 411

E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de