Ich hab gestern zum ersten Mal einer meiner Webseiten ein SSL Zertifikat verpasst. So rein theoretisch weiß man ja wie das funktioniert und entsprechend hab ich das dann auch gemacht.
- Key erzeugen (auf’m Server natürlich, einige Anbieter bieten an das bei ihnen zu tun – don’t even think about it!)
- CSR (Zertifizierungsanfrage) erzeugen
- bei einer CA registrieren und die Identität bestätigen lassen (auf der einfachsten Stufe geht’s da nur darum zu beweisen dass man Zugriff auf das Webmaster-Mailpostfach der Domain hat und auf die Domain selbst)
- CSR zur CA hochladen und das Zertifikat wieder runterladen.
Soweit so einfach, danach hält man ein von der CA beglaubigtes Zertifikat in Händen mit dem man nun, zusammen mit dem Private Key (der hoffentlich den Server nicht verlassen hat, außer vielleicht in ein sicheres Backup unterm Sofa ;) ), die entsprechende Domain SSL-fit machen kann.
Dazu brauchte (in meinem Fall) der Apache noch das entsprechende Modul mod_ssl
. War bei meiner CentOS-Installation noch nicht mit installiert, also
yum install mod_ssl
schnell nachgeholt.
Nun muss das Zertifikat noch eingebunden werden. Apache erwartet dafür einfach einen weiteren Virtual Host-Block, neben dem für Port 80 einen weiteren für 443.
<VirtualHost *:443>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/private/example.com.key
ServerName "example.com"
DocumentRoot "/var/www/example.com"
</VirtualHost>
Etwa so.
aber!
…aber, was ich nicht wusste – bzw. worauf ich zunächst reingefallen bin. Der oben ausgeführte Befehl um mod_ssl
zu installieren führt dazu das schon so ein Block angelegt wird. Im Includeverzeichnis /etc/httpd/conf.d/
legt der Installer bereits eine ssl-Datei an, die hat schon den kompletten Virtual Host-Block und referenziert 2 self-signed Zertifikate. Dummerweise ((Alphabet, Zufall, keine Ahnung – Pech jedenfalls)) bekam dieser Block Vorrang vor dem Meinen, den ich in die Datei für meine Domain geschrieben hatte. Der Effekt war, dass man zwar per SSL zugreifen konnte, aber alle Browser meckern wegen des selbst signierten Zertifikates und vertrauen der Seite nicht.
Auch wenn es so aussah als würde sich der Apache plötzlich einfach ein anderes Cert ausdenken, so hab ich den Bock dann doch noch gefunden. Vielleicht hilft dieser Artikel hier irgendwem der in den gleichen Fehler rennt.