Das eigene Zertifikat

Immer, wenn sensible Daten übertragen werden sollen, ist eine HTTPS-Verbindung einer HTTP-Verbindung vorzuziehen. Dafür benötigt man jedoch ein eigenes Zertifikat. Erstellt man sich ein eigenes Zertifikat, meckert aber der Browser rum, dass es self-signed sei (also selber Unterschrieben). Abhilfe schafft die Unterschrift einer sogenannten CA. Für so eine Unterschrift muss man normalerweise sehr viel Geld hinlegen, was für ein privates Projekt, wie das meine nicht möglich ist. Gott sei Dank gibt es kostenlose Alternativen, wovon ich eine hier vorstellen will:

1. Wir brauchen eine Domain

OK, davon hab ich gleich zwei. stadtplan-ilmenau.de und erstikalender.info. Erstere ist bei EuServ und zweitere bei INWX gehostet.

2. Wir brauchen eine Mailadresse

Ich habe eine Mailadresse bei gmx eingerichtet, wo alle relevanten Emails hingeschickt werden. Bei EuServ musste ich in meinen Domaineinstellungen einfach nur eine Domainweiterleitung für die adresse webmaster[at]stadtplan-ilmenau.de auf die GMX-Adresse einrichten.

Bei INWX war es etwas schwieriger. Hier konnte ich nur die IP eines MX definieren. Ergo hab ich eingestellt, dass alle Mails auf meinem VServer landen. Beim VServer hab ich dann PostFix so eingerichtet, dass alle Mails an webmaster[at]erstikalender.info auch bei GMX landen. Das ging wie folgt:

[cc lang=“bash“]
apt-get update
//
apt-get install postfix
postconf -e „myorigin=erstikalender.info“
postconf -e „myhostname=erstikalender.info“
postconf -e „relay_domains=erstikalender.info“
postfix reload
postfix check
nmap localhost -p 25
#Hier sollte sowas wie „25/tcp open smtp“ stehen
tail /var/log/mail.log
#Konfig anpassen:
vim /etc/postfix/main.cf
[/cc]
[cc lang=“apache“]

# anti-spam: smtp restrictions
smtpd_recipient_restrictions = reject_invalid_hostname,
reject_unknown_recipient_domain,
reject_unauth_destination,
reject_rbl_client sbl.spamhaus.org,
permit

smtpd_helo_restrictions = reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname

smtpd_client_restrictions = reject_rbl_client dnsbl.sorbs.net
[/cc]
[cc lang=“bash“]
postfix reload
#Weiterleitung einrichten
vim /etc/aliases
[/cc]
[cc lang=“apache“]

# Other aliases
webmaster: meinegmxadresse@gmx.de
[/cc]
[cce lang=“bash“]
postconf -e „alias_maps=hash:/etc/aliases“
newaliases
postfix reload
[/cce]

Die Anleitung kommt von hier.

3. Zertifikat erstellen

[cce lang=“bash“]
mkdir /etc/apache2/myssl
cd /etc/apache2/myssl/
openssl req -new > server.cert.csr

Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Thüringen
Locality Name (eg, city) []:Ilmenau
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Andreas Neumann
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:*.erstikalender.info
Email Address []:webmaster@erstikalender.info

openssl rsa -in privkey.pem -out server.cert.key
openssl x509 -in server.cert.csr -out server.cert.crt -req -signkey server.cert.key
[/cce]

Wichtig ist beim Zertifikat der Common Name. Hier muss unbedingt die Domain rein! Da ich das Zertifikat auch gleich für mehrere Subdomains, wie blog.erstikalender.info verwenden will, hab ich eine sogenannte WildCard verwendet („*.„)

4. Zertifikat unterschreiben lassen

Auf cacert.org anmelden. Dann die eigene Domain anmelden. Dies muss durch eine Mail bestätigt werden. Um das Zertifikat einzureichen, kopiert man den Inhalt der *.csr-Datei in das entsprechende Feld. Was raus kommt, wird in die *.crt-Datei kopiert.

5. Apache konfigurieren

[cc lang=“bash“]
#mod_ssl aktivieren
a2enmod ssl
#apache konfigurieren
vim /etc/apache2/conf.d/ssl.conf
[/cc]
[cce lang=“apache“]
<VirtualHost *:443>
# Domain
ServerName stadtplan-ilmenau.de
# Verzeichnis, wo die Dateien liegen
DocumentRoot /var/www/html
# SSL Anschalten
SSLEngine on
SSLCertificateKeyFile /etc/apache2/myssl/server.cert.key
SSLCertificateFile /etc/apache2/myssl/server.cert.crt
</VirtualHost>
[/cce]

Nun nur noch alles testen und , wenn es OK ist, Apache neustarten:

[cc lang=“bash“]
/etc/init.d/apache2 configtest
/etc/init.d/apache2 restart
[/cc]

6. Sonstiges

Achja: Ich verwende einen Debian6-vServer. Die Configs sind hier nur vereinfacht dargestellt, so habe ich verschiedene Configs für die unterschiedlichen Domains und Subdomains. Um es aber nicht all zu unübersichtlich werden zu lassen, hier die Light-Variante ;).

label, , , , , , , ,

One Comment

  1. Jack 30. Oktober 2015 Reply

Kommentar verfassen