Ä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 310: Zeile 329:  
==cert_client==
 
==cert_client==
   −
==SSH konfigurieren==
+
===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.
 
'''/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.
Zeile 324: Zeile 358:     
<source lang=bash inline>sftp $cert_master</source> muss ohne Eingabe funktionieren.
 
<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>