Inhaltsverzeichnis

SSL/TLS-Client-Authentifikation

SSL/TLS Logo

Neben der Client-Authentifizierung mit Username und Passwort kann sich ein Client auch mit einem X.509 Client-Zertifikat gegenüber unserem Postfix-Mailserver ausweisen.

Voraussetzungen

Hierzu sind zwei Voraussetzungen zu erfüllen:

  1. Postfix unterstützt generell SST/TLS-Verbindungen (Im Kapitel SSL/TLS - Postfixverbindungen verschlüsselte Kommunikation beschrieben)
  2. Der Mailclient unterstützt TLS-Certificate bei der Client-Authentifizierung (Bei Thunderbird ist dies zum Beispiel kein Problem.)

Konfiguration

Postfix

Als erstes ermitteln wir den Fingerprint unseres Client-Certifikates. Hierzu können wir entweder die Zertifikatsverwaltung unseres Mailclients verwenden.

Bildschirmhardcopy: Thinderbird Zertifikat Ansicht

Oder wir benitzen einfach den Befehl openssl aus dem gleichnamigen rpm.

 $ openssl x509 -noout -fingerprint -in django.pem
 SHA1 Fingerprint=33:39:E6:FC:C5:14:08:19:67:BF:D7:5A:4D:44:18:8D:AE:1B:EB:29

Diesen Fingerprint tragen wir nun in die Datei /etc/postfix/relay_clientcerts ein. Die zweite Spalte können wir dabei wieder als Bemerkungsfeld verwenden, da diese Spalte nur zum Erhalt der Tabellenstruktur benötigt wird. Darüber hinaus ist es auch nur relavant, dass der Fingerprint in der Tabelle enthalten ist und nicht welchem Bemerkungsfeld dieser Fingerprint zugeordnet ist.

 # vim /etc/postfix/relay_clientcerts
/etc/postfix/relay_clientcerts
33:39:E6:FC:C5:14:08:19:67:BF:D7:5A:4D:44:18:8D:AE:1B:EB:29     django

Anschließend erstellen wir das für die Konfigurationsdatei zugehörige Datenbankfile.

 # postmap /etc/postfix/relay_clientcerts

In der Konfigurationsdatei unseres Postfix-Mailservers tragen wir nun die die beiden Parameter smtpd_tls_ask_ccert und relay_clientcerts ein.

 # vim /etc/postfix/main.cf
# Django : 2012-06-11
# Mit SSL/TLS-Zertifikaten authentifizieren     (Kapitel 11.9)
smtpd_tls_ask_ccert = yes
relay_clientcerts = btree:/etc/postfix/relay_clientcerts

Zum Aktivieren der konfigurationsänderung starten wir nun unseren Mailserver einmal durch.

 # service postfix restart
 Shutting down postfix:                                     [  OK  ]
 Starting postfix:                                          [  OK  ]

Mailclient Thunderbird

In unserem Mailclient hinterlegen wir, wenn noch nicht bereits bei der Installation rund um die S/MIME-Verschlüsselung beim Client passiert, unser Zertifikat.

Bildschirmhardcopy: Thunderbird Konteneinstellungen

Hier wählen wier den Menüpunkt Zertifikate aus.

Bildschirmhardcopy: Thunderbird Zertifikats-Manager

Beim Menüpunkt Importieren laden wir nun unser Client-Zertifikat in die Zertifikatsverwaltung von Thunderbird.

Als nächstes wählen wir den Menüpunkt Postausgangs-Server (SMTP) aus.

Bildschirmhardcopy: Thunderbird Konteneinstellungen

Beim betreffenden Konto geben wir dann nur noch bei der Verbindungssicherheit STARTTLS an.

Bildschirmhardcopy: Thunderbird SMTP-Server

Versand - Test eMail

Zum Testen unserer Konfigurationsänderung versenden wir einfach eine eMail mit Hilfe unseres Mailclients - hier in dem Beispeil thunderbird - über unseren Postfix Mailserver.

Maillog

Im Maillog unseres Servers wird uns die erfolgreiche Clientauthentifizierung entsprechend protokolliert.

 Trusted: subject_CN=Michael Nausch, issuer=CAcert Class 3 Root, fingerprint=E4:9B:78:F5:03:99:49:50:F1:EF:50:6C:E8:7D:54:1B
 # tail -f /var/log/maillog
Jun 11 22:41:19 vml000080 postfix/smtpd[27794]: connect from unknown[192.168.10.45]
Jun 11 22:41:19 vml000080 postfix/smtpd[27794]: discarding EHLO keywords: DSN
Jun 11 22:41:19 vml000080 postfix/smtpd[27794]: setting up TLS connection from unknown[192.168.10.45]
Jun 11 22:41:19 vml000080 postfix/smtpd[27794]: unknown[192.168.10.45]: Trusted: subject_CN=Michael Nausch, issuer=CAcert Class 3 Root, fingerprint=E4:9B:78:F5:03:99:49:50:F1:EF:50:6C:E8:7D:54:1B
Jun 11 22:41:19 vml000080 postfix/smtpd[27794]: Trusted TLS connection established from unknown[192.168.10.45]: TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)
Jun 11 22:41:19 vml000080 postfix/smtpd[27794]: discarding EHLO keywords: DSN
Jun 11 22:41:19 vml000080 postfix/smtpd[27794]: NOQUEUE: client=unknown[192.168.10.45]
Jun 11 22:41:20 vml000080 postfix/smtpd[27794]: disconnect from unknown[192.168.10.45]

Mailheader

Im Mailheader auf der Empfangsseite sehen wir auch, dass sich der Client erfolgreich mit einem Certifikat authentifiziert hatte.

 (Client CN "Michael Nausch", Issuer "CAcert Class 3 Root" (verified OK))
Return-Path: <django@nausch.org>
Received: from murder ([192.168.8.180])
	 by backend12 (Cyrus v2.2.12) with LMTPA;
	 Mon, 11 Jun 2012 22:41:25 +0200
X-Sieve: CMU Sieve 2.2
Received: from mail.m-online.net (localhost [127.0.0.1])
	 by frontend1.mail.m-online.net (Cyrus v2.2.12) with LMTPA;
	 Mon, 11 Jun 2012 22:41:25 +0200
Received: from scanner-2.m-online.net (scanner-2.mail.m-online.net [192.168.8.166])
	by mail.m-online.net (Postfix) with ESMTP id 3WB5jd60S3z4KK2s
	for <django@mnet-mail.de>; Mon, 11 Jun 2012 22:41:25 +0200 (CEST)
X-Virus-Scanned: by amavisd-new at m-online.net
Received: from mx1.nausch.org (mx1.nausch.org [88.217.187.21])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by mxin-2.m-online.net (Postfix) with ESMTPS id 3WB5jb4Lp0zfwhX
	for <django@mnet-mail.de>; Mon, 11 Jun 2012 22:41:23 +0200 (CEST)
Received: from localhost (vml000060.dmz.nausch.org [10.0.0.60])
	by mx1.nausch.org (Postfix) with ESMTP id A9CBD53
	for <django@mnet-mail.de>; Mon, 11 Jun 2012 22:41:20 +0200 (CEST)
Received: from mx1.nausch.org ([10.0.0.80])
	by localhost (amavis.dmz.nausch.org [10.0.0.60]) (amavisd-new, port 10024)
	with ESMTP id Ma6cIPljzUpH for <django@mnet-mail.de>;
	Mon, 11 Jun 2012 22:41:19 +0200 (CEST)
Received: from pml010051.nausch.org (unknown [192.168.10.45])
	(using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits))
	(Client CN "Michael Nausch", Issuer "CAcert Class 3 Root" (verified OK))
	by mx1.nausch.org (Postfix) with ESMTPS
	for <django@mnet-mail.de>; Mon, 11 Jun 2012 22:41:19 +0200 (CEST)
Message-ID: <4FD657F1.9040001@nausch.org>
Date: Mon, 11 Jun 2012 22:41:21 +0200
From: Django <django@nausch.org>
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:11.0) Gecko/20120329 Thunderbird/11.0.1
MIME-Version: 1.0
To: django@mnet-mail.de
Subject: tls client auth
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

und? gehts?

Links