alexdpsg.net in https
Aloha,
nach ein wenig rumgebastel gibt es endlich fast den ganzen server mit https,
Nun mal eine kleine erklärung…. ssl ist eigentlich ja toll, so toll das man damit verdammt viel geld machen kann - man kann das ganze aber auch für umme veranstalten.
Da ich das ganze nicht schon wieder in einem jahr mir zusammen suchen will schreib ich gleich mal ein Tutorial für ssl auf vhosts mit Wordpress etc.
Also alles auf Anfang! Eigentlich wollte ich nur die Login Seite sowie das Backend von Wordpress mit ssl absichern, darauß wurde mehr, also ein komplettes tutorial für ssl mit apache auf Ubuntu
als erstes bearbeiten wir die “ports.conf” diese findet sich unter /etc/apache2/, diese sollte die 2 einträge aus dem vHosts Turorial enthalten NameVirtualHost *:80 Listen 80
Diese erweitern wir um NameVirtualHost *:443 listen 443 SSLStrictSNIVHostCheck off
in der ports.conf findet sich auch der folgende eintrag( wenn nicht einfügen)
Nun kennt der Apache2 schonmal die ports auf denen er lauschen darf. Der Obrige eintrag mit “SSLStrictSNIVHostCheck off” soll eigentlich dafür sorgen das der Apache unter vHosts mehrere ssl seiten betreiben kann, wenn der Browser vom Nutzer das auch mitmacht. [ Mobile Devices fallen raus].
Nun kommen wir zu den Zertifikaten. Diese werden mittels openssl generiert, selbst signierte Zertifikate sind nun auch schon relativ langweilig, also erstellt man sich erst eine “root CA” um mit dieser alle anderen Zertifikate zu Signieren. Dazu braucht es erstmal das openssl paket und eine gewisse datei/ordner Struktur um am ende noch den Überblick zu haben. apt-get install openssl Wir wechseln in den Ordner /etc/ssl und legen dort ein paar ordner an “mkdir crl newcerts private” zudem legen wir eine index.txt und eine serial datei an, die serial datei erstellen wir mit echo “01” > serial
Nun erstellen wir das root CA mit folgendem openssl befehl
“openssl req -new -x509 -extensions v3_ca -key private/cakey.pem \ -out cacert.pem -days 3650 -config openssl.cnf”
Nun werden wir unterschiedliche sachen gefragt unteranderem so geschichten wie(wichtige dinge in rot)
Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]: bla bla bla
Locality Name (eg, city) []: irgendne stadt
Organization Name (eg, company) [Internet Widgits Pty Ltd]: nochmehr bla bla bla
Organizational Unit Name (eg, section) []: User blabla bla
Common Name (eg, YOUR name) []:
zudem werden wir nach einem Passwort gefragt, linux ist bei einer passwort generation suuper “pwgen 1 20” gibt ein 20 zeichen langes passwort zurück mit random zeichen, und da wir das passwort noch öfter brauchen machen wir ein wenig bash magic pwgen 1 20 > /etc/ssl/passwort
Nachdem wir nun ein Root CA besitzen welches gute 10 Jahre gültig ist, können wir ein Zertifikat für den blog erstellen. Damit man auch noch in einem Jahr das Zertifikat erkennen kann ist es halbwegs sinnig die dateien nach der subdomain zu benennen
openssl ca -out newcerts/blog_alexdpsg_crt.pem -config ./openssl.cnf -infiles newcerts/blog_alexdpsg_csr.pem
Bei dieser Zertifikat erstellung werden wir auch wieder sachen gefragt, diese sollten im groben mit dem Root CA übereinstimmen, bis auf die
Common Name (eg, YOUR name) []:
Common Name (eg, YOUR name) []: blog.alexdpsg.net
Nun haben wir unser Zertifikat und unser root CA. Jetzt kommen wir zu den vHosts, als erstes wechseln wir in den /etc/apache2/sites-available/ ordner und kopieren uns einen vorhandenen vhost ( bei mir der vhost vom blog) und nenen ihn z.b ssl_blog
nun ist dieser noch auf port 80 konfiguriert, dieses ändern wir nun durch mehrere einträge [ wichtige änderungen in rot]
<VirtualHost *:443>
ServerAdmin
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory “/usr/lib/cgi-bin”> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory>
ErrorLog /var/log/apache2/error.log
Possible values include: debug, info, notice, warn, error, crit,
alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined </VirtualHost>
Im großen und ganzen geht es um die ersten paar zeilen der Konfiguration, der Virtualhost ändert sich von *:80 auf *:443( der ssl port) , die Variable ServerName/Alias bekommen an die adresse noch den port :443 angehängt und die SSL Eigenschaften werden durch SSLEngine On SSLCertificateFile /etc/apache2/ssl/ssl_fuu_bar_crt.pem SSLCertificateKeyFile /etc/apache2/ssl/ssl_fuu_bar_key.pem eingeschaltet, jetzt noch die ssl mod im apache mit a2enmod einschalten
” a2enmod ssl”
und den apache2 einmal restarten
/etc/init.d/apache2 restart
und nun sollte der blog auch unter https://blog.alexdpsg.net erreichbar sein ;)