Änderungen

Zeile 18: Zeile 18:  
cp dehydrated/dehydrated /usr/local/sbin/dehydrated
 
cp dehydrated/dehydrated /usr/local/sbin/dehydrated
 
mkdir -p /etc/dehydrated
 
mkdir -p /etc/dehydrated
 +
</source>
 +
 +
===Apache konfigurieren===
 +
 +
'''/etc/apache2/sites-available/letsencrypt.conf''':Apache muss so konfiguriert werden, dass $domain/.well-known/acme-challenge/ auf das richtige Verzeichnis zeigt. Somit kann die Acme challenge erfolgreich durchgeführt werden.
 +
<source lang=bash>
 +
Alias /.well-known/acme-challenge/ /var/www/dehydrated/                   
 +
<Directory "/var/www/dehydrated/">     
 +
    Options None
 +
    AllowOverride None
 +
    Require all granted
 +
    ForceType text/plain
 +
    Options -Indexes
 +
</Directory>
 +
</source>
 +
Dann noch die config aktivieren und apache neu laden:
 +
<source lang=bash>
 +
a2enconf letsencrypt
 +
apachectl restart
 
</source>
 
</source>
   Zeile 300: Zeile 319:     
Das script in cron.daily läuft einmal täglich (wann wird bestimmt von Debian). Dann werden neue Zertifikate abgerufen und alte erneuert.
 
Das script in cron.daily läuft einmal täglich (wann wird bestimmt von Debian). Dann werden neue Zertifikate abgerufen und alte erneuert.
 +
 
'''/etc/cron.daily/ssl_certs''': dehydrated wird aufgerufen und stdout wird verworfen. Stderr wird über cron per mail weiter gegeben.
 
'''/etc/cron.daily/ssl_certs''': dehydrated wird aufgerufen und stdout wird verworfen. Stderr wird über cron per mail weiter gegeben.
 
<source lang=bash>
 
<source lang=bash>
Zeile 309: Zeile 329:  
==cert_client==
 
==cert_client==
   −
==SSH kofigurieren==
+
===apache reverse proxy konfigurieren===
 +
 
 +
'''/etc/apache2/conf-available/letsencrypt.conf''':Da die challenges von letsencrypt bei dem cert_client enden (http://$domain/.well-known/acme-challenge/), aber auf dem cert_master terminiert werden sollen, richten wir einen reverse proxy ein.
 +
<source lang=bash>
 +
SSLProxyEngine On
 +
ProxyPassMatch ^/(.well-known/acme-challenge/.*) https://freifunk-mwu.de:443/$1
 +
ProxyPassReverse / https://freifunk-mwu.de:443/
 +
</source>
 +
Jetzt noch config aktivieren und apache neustarten:
 +
<source lang=bash>
 +
a2enconf letsencrypt
 +
apachectl restart
 +
</source>
 +
Es ist noch notwendig ein paar weitere Apache module zu aktivieren <source lang=bash inline>a2enmod $mod</source>, welche ist der Fehlermeldung beim neu starten zu entnehmen.
 +
 
 +
===SSH konfigurieren===
 +
 
 +
'''/root/.ssh/config''':Cron läuft als root, deswegen brauchen wir die config hier. $Hostname gegen den cert_client ersetzen, $cert_master gegen hostname cert_master.
 +
<source lang=bash>
 +
Host $cert_master
 +
        User cert
 +
        Hostname $cert_master.freifunk-mwu.de
 +
        Port 23
 +
        IdentityFile /home/admin/.ssh/$HOSTNAME_rsa
 +
</source>
 +
 
 +
'''/home/admin/.ssh/$HOSTNAME_rsa.pub:''' Den public key auf dem cert_master in die zusätzliche authorized_keys Datei eintragen.
 +
 
 +
<source lang=bash inline>sftp $cert_master</source> muss ohne Eingabe funktionieren.
 +
 
 +
===Cron===
 +
'''/etc/cron.daily/ssl_certs''': Hier wird das Zertifikat des Hosts $cert_client abgerufen. Dann werden Permissions angepasst und Dienste neu gestartet. Andere Dienste erfordern hier Anpassung (z.B. mail).
 +
<source lang=bash>
 +
#!/bin/sh
 +
 
 +
DOMAINS="$cert_client.freifunk-mwu.de"
 +
 
 +
rm /etc/apache2/ssl/* -r
 +
for DOMAIN in $DOMAINS;
 +
do
 +
mkdir -p /etc/apache2/ssl/$DOMAIN
 +
sftp -q -r zuckerwatte:/$DOMAIN /etc/apache2/ssl/ > /dev/null
 +
 
 +
chmod 0550 /etc/apache2/ssl/$DOMAIN
 +
chmod 0440 /etc/apache2/ssl/$DOMAIN/*
 +
done
 +
 
 +
chown -R www-data.admin /etc/apache2/ssl/
 +
apache2ctl restart
 +
</source>