Let’s Encrypt Kostenlose SSL / TLS Zertifikate, oder, wie bekomme man http Port 80 los
Checkliste Voraussetzungen:
Datum der Erstellung: 08.03.2016
Verwendetes OS:
Verwendeter Webserver:
CentOS Linux release 7.2.1511
Name : httpd
Architektur : x86_64
Version : 2.4.6
Ausgabe : 40.el7.centos.1
Debian 8.3 jessie
Notwendiges Wissen:
Betrieb von Debian / CentOS
Let’s Encrypt, eine Übersicht:
Übersicht der Güte von Zertifikaten:
Name | Klasse | Überprüfung | Kosten |
Let’s Encrypt |
0 |
Die Inhaberinformationen werden nicht überprüft |
Das Zertifkat wird kostenlos ausgestellt |
z.B
PositiveSSL |
1 | Die E-Mail Adresse und die Domain wurde überprüft | ca ~ 40,0€ für 3 Jahre |
3 | Die persönliche Identität der Person wurde kontrolliert | ca ~ 150,0€ für 3 Jahre |
Limits bei Let’s Encrypt, die man beachten sollte:
- 20 Zertifikate innerhalb von 7 Tagen
- 90 Tage Gültigkeit der Zertifikat
- 500 Zertifikate Pro IP-Adresse in 3 Stunden
Installaion:
Centos Packete
yum -y install git
httpd mod_ssl
git Firewall Port
Git lauscht auf den Port 9418, Dieser Port auf der Firewall ausgehend Freigeschaltet sein
Let'sEncrypt Installation
Die Installation ist sehr einfach:
Eine Ausführliche Anleitung findet man unter http://wiki.pratznschutz.com/index.php/Let%27s_Encrypt
Es wird ein Directory erzeugt:
mkdir /var/www/acme-client
In diesem Verzeichnis wird mit "git" die Software installiert.
git clone https://github.com/letsencrypt/letsencrypt /var/www/acme-client
cd /var/www/acme-client
./letsencrypt-auto certonly
Außer der E-Mail Adresse muss noch nichts eingegeben werden.
HTTPD Installation
Überprüfung der default Einstellungen
httpd -V
Server version: Apache/2.4.6 (CentOS)
Server built: May 12 2016 10:27:23
Server's Module Magic Number: 20120211:24
Server loaded: APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="/run/httpd/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
mod_rewrite Installation
ls /etc/httpd/modules | grep mod_rewrite
mod_rewrite.so
grep -i LoadModule /etc/httpd/conf.modules.d/* | grep mod_rewrite
Es sollte folgender output erscheinen:
/etc/httpd/conf.modules.d/00-base.conf:LoadModule rewrite_module modules/mod_rewrite.so
Erzeugen Virtual Host http://system-mind.de
Im Verzeichnis "/etc/httpd/conf.d" löschen wir alles, was default ist:
rm /etc/httpd/conf.d/*
Im Verzeichnis "/etc/httpd/sites-enable"
werden die Konfigfiles für die V-Hosts aktiviert
mkdir /etc/httpd/sites-available
mkdir /etc/httpd/sites-enabled
Hinweis: Diese Verzeichnis Struktur wurde von Debian eingeführt und sorgt für zusätzliche Flexibilität mit unseren virtuellen Hosts. Sie lassen sich leichter verwalten (vorübergehend aktivieren und deaktivieren).
Als nächstes konfigurien wir Apache für die virtuelle Hosts. Apache soll in dem Verzeichnis "sites-enabled" suchen. Um dies zu erreichen, werden wir die Datei "/etc/httpd/conf/httpd.conf" bearbeiten. Wir fügen in diese Datei folgende Zeile hinzu:
echo "IncludeOptional sites-enabled/*.conf" >>
/etc/httpd/conf/httpd.conf
Wir erzeugen einen Virtual Host:
echo "<VirtualHost *:80> ServerName www.system-mind.de ServerName www.system-mind.de ServerAdmin webmaster ServerSignature On
CustomLog /var/log/httpd/www.system-mind-access.log combined ErrorLog /var/log/httpd/www.system-mind-error.log
DocumentRoot /var/www/html <Directory /var/www/html> Options Indexes FollowSymlinks MultiViews Require all granted </Directory>
</VirtualHost>" >
/etc/httpd/sites-available/system-mind.de.conf
ln -s /etc/httpd/sites-available/system-mind.de.conf
/etc/httpd/sites-enabled
enable und starten httpd service
systemctl enable httpd.service service httpd restart || systemctl status httpd.service
-
erzeugen Test HTML-Page
echo "<html>
<head>
<title>Test Page</title>
<style type=text/css>
h1 {text-align:center; font-family:Arial, Helvetica, Sans-Serif; }
{text-indent:20px; }
</style>
</head>
<body bgcolor = #ffffcc text = #000000>
<h1>Test Page</h1>
</body>
</html>" > /var/www/html/index.html
http://www.system-mind.de
Es sollte eine Webseite mit "Test Page erscheinen
acme-client Virtual Host
Der Request von Let'sEncrypt soll an den acme-client weitergeleitet werden. Dafür erzeugen wir einen weitern Virtual Host
vi /etc/httpd/sites-available/acme-client.system-mind.de.conf
und fügen den Inhalt hinein:
<VirtualHost *:80>
DocumentRoot /var/www/acme-client
ServerName http://acme-client.system-mind.de
CustomLog /var/log/httpd/acme-client.info-access.log combined
ErrorLog /var/log/httpd/acme-client.info-error.log
ServerAdmin webmaster
<If "%{HTTP_USER_AGENT} !~ /Let\'s Encrypt validation server/">
Require all denied
</If>
</VirtualHost>
ln -s /etc/httpd/sites-available/acme-client.system-mind.de.conf
/etc/httpd/sites-enabled
enable und starten httpd service
systemctl enable httpd.service service httpd restart || systemctl status httpd.service
Ein Test führt zu einen 403 Forbidden
http://acme-client.system-mind.de
Erweitern Virtual Host http://www.system-mind.de
Wir leiten den request von Let'sEncrypt zu den acme-client weiter.
Dazu erweitern wir den Virtual Host http://www.system-mind.de
vi
/etc/httpd/sites-available/www.system-mind.de.conf
<VirtualHost *:80> ServerName www.system-mind.de ServerName www.system-mind.de ServerAdmin webmaster ServerSignature On CustomLog /var/log/httpd/system-mind-access.log combined ErrorLog /var/log/httpd/system-mind-error.log <IfModule mod_rewrite.c> LogLevel warn mod_rewrite.c:trace3 RewriteEngine On RewriteCond %{REQUEST_URI} ^/\.well-known\/acme-challenge\/?.* RewriteRule ^ http://acme-client.system-mind.de%{REQUEST_URI} </IfModule> DocumentRoot /var/www/html <Directory /var/www/html> Options Indexes FollowSymlinks MultiViews Require all granted </Directory> </VirtualHost>
Bei dem aufruf von http://acme-client.system-mind/.well-known/acme-challenge führt ebenfalls zu einen 403 Forbidden
Let'sEncrypt Zertifkat anforden
Wir erzeugen die Datei /etc/letsencrypt/cli.ini
echo "authenticator = webroot webroot-path = /var/www/acme-client/ renew-by-default agree-tos email = webmaster" > /etc/letsencrypt/cli.ini
Jetzt können wir das Zertifkat für nvon Let'sEncrypt anfordern
/var/www/acme-client/letsencrypt-auto --config /etc/letsencrypt/cli.ini -d www.system-mind.de certonly
systemctl enable httpd.service service httpd restart || systemctl status httpd.service
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.system-mind.de/fullchain.pem. Your cert
will expire on 2016-10-20. To obtain a new or tweaked version of
this certificate in the future, simply run letsencrypt-auto again.
To non-interactively renew *all* of your certificates, run
"letsencrypt-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
SSL Virtual Host https://www.system-mind.de erzeugen
Wir erzeugen den Virtual Host https:
<VirtualHost *:443> ServerName www.system-mind.de ServerAdmin webmaster CustomLog /var/log/httpd/www.system-mind-access.log combined ErrorLog /var/log/httpd/www.system-mind-error.log LogLevel warn <IfModule mod_ssl.c> SSLEngine On SSLProtocol ALL -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite HIGH:!ADH:!RC4:!aNULL:!eNULL:!EXP:!MEDIUM:!LOW:!MD5 SSLCertificateFile /etc/letsencrypt/live/www.system-mind.de/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.system-mind.de/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.system-mind.de/chain.pem </IfModule> DocumentRoot /var/www/html <Directory /var/www/html> Options Indexes FollowSymlinks MultiViews Require all granted </Directory> </VirtualHost>
Ein Test führt zu https://www.system-mind.de zeigt das Zerifikat:
permanent Umleitung von http
Erweitern Virtual Host http://www.system-mind.de
Wir leiten den request von http://www.system-mind.de um. Dafür erweiterten wir die Virtual Host Konfig. Dafür entfernen wir das DocumentRoot
<VirtualHost *:80>
ServerName www.system-mind.de
ServerName www.system-mind.de
ServerAdmin webmaster
ServerSignature On
CustomLog /var/log/httpd/system-mind-access.log combined
ErrorLog /var/log/httpd/system-mind-error.log
<IfModule mod_rewrite.c>
LogLevel warn mod_rewrite.c:trace3
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/\.well-known\/acme-challenge\/?.*
RewriteRule ^ http://acme-client.system-mind.de%{REQUEST_URI}
</IfModule>
Redirect permanent / https://www.system-mind.de/
</VirtualHost>
Rufen wir die Seite
http://www.system-mind.de
so werden wir automatisch nach
https://www.system-mind.de
umgeleitetet.
Fertig.
Artikelaktionen