Postfix/Dovecot mit CA-signierten Zertifikaten

  • Thread starter Thread starter Deleted member 14254
  • Start date Start date
D

Deleted member 14254

Guest
Hallo zusammen,

Vor etwa einer Woche hatte ich im bereich Webserver ein Thema eröffnet worin es um empfehlenswerte Signifizierungs-bzw.Zertifikatestellen ging.
Gestern habe ich mir nun soein Zertifikat von Startcom gekauft. Es handelt sich dabei um ein Wildcard Class2 Zertifikat. Beim Webserver hab ich damit auch keine Schwierigkeiten. Allerdings gibt es beim Mailserver - egal was ich auch mache - das Problem hier:

Code:
verify error:num=27:certificate not trusted

Das Problem hab ich soweit erkannt. Das muss an den ChainCertifikaten liegen, die man ja in Postfix und Dovecot zusammen mit dem ssl.crt in einem File haben muss. Anders als bei Apache, der vorsieht, die Files einzeln anzugeben:

Code:
SSLCertificateFile...
SSLCertificateKeyFile...
SSLCertificateKeyFile...
SSLCACertificateFile...

Ich kapier nur einfach mal nicht, wie man z.B. laut dieser Seite:

Code:
http://kyza.de/2010/08/10/ssl-cert-chain-courier-imap-postfix-smptd/

es dennoch nicht möglich sein soll, selbst durch Nacheinanderaufführung, in Postfix/Dovecot diese blöden Teile da zum Laufen zu bewegen. :(

Hätte jemand vielleicht eine Idee dazu oder etwas Hilfe für mich übrig?
 
Du meinst, das smtpd UND smtp angegeben werden müssen?

Also laut dieser Seite hier:

http://wiki2.dovecot.org/SSL/DovecotConfiguration

müssen sämtliche Zertifikate in 1 File...

Chained SSL certificates

Put all the certificates in the ssl_cert file. For example when using a certificate signed by TDC the correct order is:

Dovecot's public certificate
TDC SSL Server CA
TDC Internet Root CA
Globalsign Partners CA

Nur wie das bei StartCom aussieht wär nett, wenn mir jemand sagen könnte, welche das sind. Ich sitze seit 12 Stunden daran :/
 
Last edited by a moderator:
Ich glaube bei mir habe ich als erstes mein Zertifikat in die Datei gepackt und danach das Chain Zertifikat. Das funktioniert auch so bei mir.

(Könnte auch andersrum gewesen sein, aber bin mir ziemlich sicher, aufjedenfall zwei Zertifikate, meins und das Chain)
 
Hallo trik,

Also ich habe nun den gesamten Tag, besser gesagt, die gesamte Nacht ebenfalls, seit gestern Abend als ich die Zertifikate gekauft habe, in alle Himmelsrichtungen probiert. Hatte mehrere Zertifikate in einem File, hatte sie einzeln, hatte sie in unterschiedlichen Plätzen, also Ordnern...

Mir scheint es fast, als ob sie nicht funktionieren würden.
Im Browser, das fiel mir aber erst später auf, habe ich die berühmte knallrote Warnung, das die Echtheit der Seite in Frage gestellt ist, "Zertifikatfehler". Also geht es auch dort nicht... Ich bin nun mit meinem Latein am Ende. Keine Ahnung, was ich noch machen könnte...
 
Hast du auch das richtige Zwischenzertifikat verwendet? IIRC hat Startcom für Class2-Zertifikate nämlich ein anderes als für Class1.
 
Last edited by a moderator:
Hallo danton und trik,

Danke für Eure Anregungen noch :)

Zu Deiner Frage, @danton:
Ja, ich nutze das class2-certificate. Gestern hatte mir noch zwischenzeitlich einer der StartCom Certificate Beschäftigten gesagt, das ich dieses, "sub.class2.server.ca.pem" als SSLCACertificate verwenden solle.

Hier ist mal meine 10-ssl.conf von dovecot, worum trik gebeten hatte:

Code:
# cat /etc/dovecot/conf.d/10-ssl.conf
##
## SSL settings
##

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = yes

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
# ssl_cert = </etc/ssl/mailserver_cert.pem
ssl_cert = </etc/ssl/meine.domain.tld/dovecot/ssl_cert.pem
# ssl_key = </etc/ssl/mailserver_keyrsa.pem
ssl_key = </etc/ssl/meine.domain.tld/dovecot/ssl_key_dc.pem

# If key file is password protected, give the password here. Alternatively
# give it when starting dovecot with -p parameter. Since this file is often
# world-readable, you may want to place this setting instead to a different
# root owned 0600 file by using ssl_key_password = <path.
#ssl_key_password =

# PEM encoded trusted certificate authority. Set this only if you intend to use
# ssl_verify_client_cert=yes. The file should contain the CA certificate(s)
# followed by the matching CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem)
# ssl_ca = </etc/ssl/demoCA/cacert.pem
ssl_ca = </etc/ssl/meine.domain.tld/dovecot/ssl_intermediate_class2.pem

# Require that CRL check succeeds for client certificates.
#ssl_require_crl = yes

# Request client to send a certificate. If you also want to require it, set
# auth_ssl_require_client_cert=yes in auth section.
#ssl_verify_client_cert = no

# Which field from certificate to use for username. commonName and
# x500UniqueIdentifier are the usual choices. You'll also need to set
# auth_ssl_username_from_cert=yes.
#ssl_cert_username_field = commonName

# How often to regenerate the SSL parameters file. Generation is quite CPU
# intensive operation. The value is in hours, 0 disables regeneration
# entirely.
#ssl_parameters_regenerate = 168

# SSL protocols to use
#ssl_protocols = !SSLv2

# SSL ciphers to use
ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL

# SSL crypto device to use, for valid values run "openssl engine"
#ssl_crypto_device =

Oben zur Erklärung, da habe ich die vorherigen selbsterstellten/selbstsignierten Zertifikate nur kommentiert, damit ich schnell zum Testen switchen konnte. Also zwischen den neuen und den alten, die ich zum überhaupt möglichen SSL-Betrieb vom Mailsvr erstellt hatte.

Ist ein Phänomen einfach. Mozilla erkennt die Zertifikate sofort, zeigt im Schloss in der Browserleiste an, das es sich um die von StartCom verifizierte Site handelt. InternetExplorer zeigt einen Zertifikatfehler. Aber was das verwunderlichste ist: Bleibe ich auf der Seite, also per IE vom Windows-Rechner, tue 5 Minuten exakt garnichts... und aktualisiere dann die Seite, erkennt auch IE das es sich um die von StartCom verifizierte Site handelt, und auch dort wird das Zertifikat korrekt gezeigt.

Sorry das ich jetzt hier in die Mailsvr-Rubrik auch websvr-relevante Dinge miteingebracht hatte. Aber ich denke, das hilft in diesem Fall den Zusammenhalt zu bewahren.

Danke für alle Antworten! Vielleicht fällt Euch ja nochwas wichtiges auf...
 
Moin, ich habe auch Postfix und Dovecot im Einsatz und verwende ein Class2 Zertifikat von StartCom und vielleicht hilft Dir das ja ein wenig.

postfix main.cf
Code:
smtpd_tls_cert_file = /etc/ssl.keys/domain.crt
smtpd_tls_key_file = /etc/ssl/private/domain.key
smtpd_tls_ca_file = /etc/ssl.keys/startcom.org.ca
smtpd_use_tls = yes
Ich habe in der mastar.cf auch den Submission Port aktiviert und kann einfach mit Hilfe von diesem Zertifikat meine Emails von Thunderbird versenden ohne das ich das Zertifikat erst akzeptieren muss. Wichtig ist dabei allerdings das natürlich die URL zum SMTP Server genau die gleiche ist, wie in dem Zertifikat ;)

Da ich auf dem einen Server einen älteren Dovecot installiert habe.. sieht es aktuell so aus...
Code:
ssl_cert_file = /etc/ssl.keys/domain.crt
ssl_key_file = /etc/ssl/private/domain.key
ssl_ca_file = /etc/ssl.keys/startcom.org.ca
ssl_verify_client_cert = yes

Du kannst natürlich die Pfade individuell anpassen wie Du es möchtest, ich hatte es jetzt so gemacht und es funktioniert. Wenn man via IMAP oder POP3 und STARTTLS von Thunderbird verbindet, funktioniert alles ohne Probleme.

Und wenn ich meine Config so anschaue, und deine.. fällt mir auf das Du "ssl_verify_client_cert = yes" noch auskommentiert hast, ich würde es mal mit einbeziehen und auf yes setzen.
 
Hallo Domi,

Danke Dir für Deinen Tip! Hat sich auch in der Zwischenzeit nochwas ergeben, meine Frau mit ihrer Freundin haben meine Site mal von einem PC aufgerufen, auf dem sie bislang nie aufgerufen war, also eine neutrale Voraussetzung für Funktionsüberprüfung, und dort hat auch IE die Seite sofort aufgebaut und ohne diesen Horror-Hinweis über mögliche Fälschungen.

Ich probiers nachher auch nochmal mit nem Mobi-Phone mit unterschiedlichen Browsern aus, ob was verdächtiges dabei rumkommt.

Habe auch gestern noch gelesen gehabt, das es schonmal einen solchen Fall gab, bei dem Zertifikate korrekt eingebunden aber unterschiedliches Verhalten bei Seitenaufrufen zeigte. Das waren auch StartCom Zertifikate. Aber auch Thawte-Fälle habe ich gelesen. Naja, wenns denn jetzt läuft, wollen wir mal zufrieden sein.

Dann fiel mir auf, das nun auch meine Mailclienten ohne Zwischenfrage, das Zertifikat akzeptieren zu müssen Mails versenden/abrufen können.

In der master.cf von Postfix habe ich auch submission aktiv. Vorher SSL per 465, aber das habe ich damals augrund d4f's Tip hier vom Forum auf submission geändert.

Was ich evtl noch etwas abändere, werden die Pfade für die Zertifikate und Schlüssel sein. Das gefällt mir so noch nicht so ganz. War auch nur gestern so auf die Schnelle um ohne die certs mit andern zu verwechseln testen zu können.

Hoffe, jetzt bau ich mir nicht wieder Fehler ein ;)
Danke Euch nochmals sehr herzlich! Dann ist dies Thema erstmals gelöst :)
 
Hier ist mal meine 10-ssl.conf von dovecot, worum trik gebeten hatte:

Ich habe gerade noch mal einen Blick in meine 10-ssl.conf geworfen (verwende allerdings nur ein Class1-Zertifikat). Den Eintrag ssl-ca solltest du nicht verwenden, der ist soweit ich das verstanden habe, nur für Zertifikatsbasierte Authentisierung notwendig. Die ssl-cert zeigt bei mir auf eine Datei mit der kompletten Zertifikatskette, in der folgende drei Zertifikate enthalten sind: Mein Zertifikat, dann Startcom Class 1 und am Ende noch das Startcom CA.
 
Da hast Du Recht, danton. Also mit der ssl_ca. Ich hatte das aber auch nur, weil ich ansonsten Hinweise über fehlende Zertifikate bekam, wenn ich die ssl_ca leer liess, bzw. ich nur mein Cert plus den Key in die Konfig einband.

Also so:

smtpd_tls_cert_file = /etc/ssl...
smtpd_tls_key_file = /etc/ssl...

Das ich mehrere Zertifikate in nur 1 File packen konnte, wusste ich damals nicht.
Die Zertifikatbasierte Authentifizierung habe ich aber auch nicht eingeschaltet. Domi hatte das ja gemeint. Aber das wollte ich dann doch nicht... Das steht bei mir auch auf no, bzw, ist kommentiert: (Die relevanten Abschnitte)

Code:
# PEM encoded trusted certificate authority. [B]Set this only if you intend to use
# ssl_verify_client_cert=yes.[/B] The file should contain the CA certificate(s)
# followed by the matching CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem)
# ssl_ca = </etc/ssl/demoCA/cacert.pem
ssl_ca = </etc/ssl/

Code:
# Request client to send a certificate. [B]If you also want to require it, set[/B]
# auth_ssl_require_client_cert=yes in auth section.
#ssl_verify_client_cert = no

So gesehen, als nach meinem Verständnis nach müsste meine Konfig Deiner entsprechen, außer das Du in Deinem CertFile nicht nur Dein persönliches Zertifikat sondern auch das intermediate_class1 und das ca.pem hast. Während bei mir auf 3 Files aufgeteilt ist und ich als CA-Authority das intermediate_class2 verwende. Das hatte mir auf Anfrage einer der Startcom-Mitarbeiter mitgeteilt, weil es bei mir mit den Zertifikaten zuerst nicht klappen wollte...

Hmmm, jetzt bin ich erstmal am überlegen, ob ich nochmal ändern soll... Werde es nachher mal probieren...

Danke Dir vielmals für Deine Aufmerksamkeit bezüglich dessen, das es Dir noch aufgefallen ist!
 
Meine 10-ssl.conf besteht im Prinzip nur aus zwei wichtigen Zeilen (der Rest ist auskommentiert, d.h. die Default-Werte werden verwendet):
Code:
ssl_cert = </path/to/mail.domain.chain.crt
ssl_key = </path/to/domain.key
In der mail.domain.chain.crt stehen alle Zertifikate drin, also die komplette KetteMein Zertifikat, dann Startcom Class 1 und am Ende noch das Startcom CA.
Analog habe ich die beiden Dateien auch bei Postfix eingebunden, entsprechend steht bei smtpd_tls_CAfile bei mir nichts drin.
 
Hallo danton,

Habe es jetzt bei mir auch so gemacht:

Das certificate-file enthält an erster Stelle mein Class2-persönliches-cert, an zweiter das class2-intermediate (das, das vorher als ca-authority war) und an dritter Stelle das Ca.pem. Somit auch nur noch 2 Zeilen nicht kommentiert bei mir. Darauf greift auch Postfix zu und die diese Domain abdeckenden vhosts unter
Code:
/etc/apache2/vhosts.d

Funktioniert 1a! Danke nochmals! Jetzt sieht's schon ganz "anders" aus, wenn ich mich per
Code:
smtpd ... -connect mail.Domain.tld:pop3s
anmelde und das Zertifikat gezeigt bekomme. Erscheint oben nun die gesamte Kette der Certs :)

Angenehmen 1.Mai!
 
Last edited by a moderator:
Back
Top