GELÖST name-based virtualhosts lets encrypt & selfsigned ssl

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
webminbw
Beiträge: 14
Registriert: 01.05.2016 02:33:36

GELÖST name-based virtualhosts lets encrypt & selfsigned ssl

Beitrag von webminbw » 16.06.2016 14:22:06

Vor lauter Bäumen sehe ich den Wald nicht mehr... Bitte um Hilfe. Danke fürs Lesen vorab!
Frage:
Aus irgendwelchen Gründen komme ich nicht mit
https://subdomain2.domain1.tld
auf
/var/www/html/subdomain2.domain1.tld/cms?

Statt dessen öffnet sich immer
DocumentRoot /var/www/html/subdomain1.dynamicdnsprovider.tld
Was mache ich falsch??

nslookup subdomain2.domain1.tld

Code: Alles auswählen

Server:         127.0.1.1
Address:        127.0.1.1#53
Non-authoritative answer:
subdomain2.domain1.tld   canonical name = subdomain2.dynamicdnsprovider.tld.
Name:   subdomain2.dynamicdnsprovider.tld
Address: 188.109.x.x
cat /etc/apache2/sites-enabled/subdomain1.dynamicdnsprovider.tld.conf | grep -v '#'| grep -v '^$'|less

Code: Alles auswählen

<VirtualHost *:80>
                ServerAlias *
                RewriteEngine On
                RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerName subdomain1.dynamicdnsprovider.tld:443
                ServerName subdomain1.domain1.tld:443
                ServerName 192.168.x.x:443
                ServerAlias subdomain1.domain1.tld subdomain1.dynamicdnsprovider.tld 192.168.x.x
                ServerAdmin webmin@domain1.tld
                Alias /blog /var/www/html/subdomain1.dynamicdnsprovider.tld/blog
                Alias /wiki /var/www/html/subdomain1.dynamicdnsprovider.tld/wiki
                Alias /oc /var/www/html/subdomain1.dynamicdnsprovider.tld/oc 
                Alias /cms /var/www/html/subdomain1.dynamicdnsprovider.tld/cms
                DocumentRoot /var/www/html/subdomain1.dynamicdnsprovider.tld
                Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
                BandwidthModule On
                ForceBandWidthModule On
                Bandwidth all 604800
                ErrorDocument 510 /errors/maxconexceeded.html
                BandWidthError 510
                LargeFileLimit .avi 1 200000
                LargeFileLimit .mpg 1 200000
                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
                SSLEngine on
                SSLCertificateFile /etc/apache2/ssl/subdomain1.dynamicdnsprovider.tld/apache.crt
                SSLCertificateKeyFile /etc/apache2/ssl/subdomain1.dynamicdnsprovider.tld/apache.key
                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>
                <Directory /var/www/html/subdomain1.dynamicdnsprovider.tld/blog>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                </Directory>
                
                <Directory /var/www/html/subdomain1.dynamicdnsprovider.tld/wiki>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                </Directory>
                <Directory /var/www/html/subdomain1.dynamicdnsprovider.tld/cms>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                </Directory>
                <Directory /var/www/html/subdomain1.dynamicdnsprovider.tld/oc>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                DAV Off
                
                Satisfy Any
                </Directory>
                BrowserMatch "MSIE [2-6]" \
                                nokeepalive ssl-unclean-shutdown \
                                downgrade-1.0 force-response-1.0
                BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
        </VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html/subdomain2.domain1.tld/cms
                ServerName subdomain2.domain1.tld:443
                ServerName subdomain2.dynamicdnsprovider.tld:443
                ServerAlias subdomain2.dynamicdnsprovider.tld 192.168.x.x
                ServerAdmin webmin@domain1.tld
SSLCertificateFile /etc/letsencrypt/live/www.domain1.tld/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.domain1.tld/privkey.pem
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
</VirtualHost>
</IfModule>

Zuletzt geändert von webminbw am 16.06.2016 21:16:10, insgesamt 1-mal geändert.

mludwig
Beiträge: 794
Registriert: 30.01.2005 19:35:04

Re: name-based virtualhosts lets encrypt neben selfsigned ss

Beitrag von mludwig » 16.06.2016 15:04:09

Mit nur einer IP ist es meines Wissens nicht möglich, mehrere virtuelle Hosts (Domains) mit SSL zu hosten. Es gibt schlicht ein Henne vs. Ei Problem:

Bei SSL wird zuerst eine verschlüsselte Verbindung aufgebaut --> dafür braucht man das Zertifikat, in dem auch der Domainname steht. Der gewünschte Domainname wird aber vom Client erst nach Aufbau der Verbindung übermittelt ...

Somit wird bei dir wohl immer der erste VHost gewinnen.

Gleich im ersten Satz unter:
https://wiki.apache.org/httpd/NameBasedSSLVHosts

webminbw
Beiträge: 14
Registriert: 01.05.2016 02:33:36

Re: name-based virtualhosts lets encrypt neben selfsigned ss

Beitrag von webminbw » 16.06.2016 16:57:30

Danke erst einmal für die schnelle Antwort!!
Anschlussfrage:
Da ich ja mit dem folgenden Befehl für beide subdomains ein Zertifikat angelegt habe,
sudo /usr/local/letsencrypt/letsencrypt-auto-source/letsencrypt-auto certonly --rsa-key-size 4096 -d subdomain1.domain1.tld -d subdomain2.domain1.tld
Abgelegt in den Ordnern
/etc/letsencrypt/live/subdomain1.domain1.tld/
/etc/letsencrypt/live/subdomain2.domain1.tld/
wobei
subdomain1.domain1.tld => subdomain1.dynamicdnsprovider.tld per CNAME weiterleitet
und
subdomain2.domain1.tld => subdomain2.dynamicdnsprovider.tld per CNAME weiterleitet

Müsste es dann nicht reichen, wenn ich oben in
/etc/apache2/sites-enabled/subdomain1.dynamicdnsprovider.tld.conf

Code: Alles auswählen

SSLEngine on
                SSLCertificateFile /etc/apache2/ssl/subdomain1.dynamicdnsprovider.tld/apache.crt
                SSLCertificateKeyFile /etc/apache2/ssl/subdomain1.dynamicdnsprovider.tld/apache.key
mit ersetze?

Code: Alles auswählen

# [Update]: (Danke @Maurice) Ab Apache 2.4.8 (ab Ubuntu 15.04 vivid) sollte auf das „SSLCertificateChainFile“ verzichtet werden, und
# stattdessen (ähnlich wie bei Nginx) nur „SSLCertificateFile“ mit „fullchain.pem“ statt cert.pem genutzt werden:
# https://thomas-leister.de/internet/anleitung-fuer-lets-encrypt-kostenlose-tls-zertifikate-fuer-alle/
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/subdomain2.domain1.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/subdomain2.domain1.tld/privkey.pem
# SSLCertificateFile /etc/letsencrypt/live/subdomain2.domain1.tld/cert.pem
# SSLCertificateChainFile /etc/letsencrypt/live/subdomain2.domain1.tld/chain.pem
Müsste es dann Deiner Meinung nach funktionieren? Dann hätte ich ja nur einen SSL-Schlüssel.
Dafür spräche ja, dass

Code: Alles auswählen

sudo openssl x509 -text -in /etc/letsencrypt/live/subdomain2.domain1.tld/cert.pem|less
[...]
X509v3 Subject Alternative Name: 
                DNS:subdomain1.domain1.tld, DNS:subdomain2.domain1.tld
[...]
ausgibt.
Richtig?
Dann wäre also die Nutzung von beiden
DocumentRoot /var/www/html/subdomain2.domain1.tld/cms
und
DocumentRoot /var/www/html/subdomain1.dynamicdnsprovider.tld
möglich? Oder mache ich da wieder einen Denkfehler?
Zweite Frage:
Was ist eigentlich mit

Code: Alles auswählen

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName subdomain1.dynamicdnsprovider.tld:443
                ServerName subdomain1.domain1.tld:443
                ServerName 192.168.x.x:443
                ServerAlias subdomain1.domain1.tld subdomain1.dynamicdnsprovider.tld 192.168.x.x
                ServerAdmin webmin@domain1.tld
                Alias /blog /var/www/html/subdomain1.dynamicdnsprovider.tld/blog
                Alias /wiki /var/www/html/subdomain1.dynamicdnsprovider.tld/wiki
                Alias /oc /var/www/html/subdomain1.dynamicdnsprovider.tld/oc
                Alias /cms /var/www/html/subdomain1.dynamicdnsprovider.tld/cms
                DocumentRoot /var/www/html/subdomain1.dynamicdnsprovider.tld
[...]
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html/subdomain2.domain1.tld/cms
                ServerName subdomain2.domain1.tld:443
                ServerName subdomain2.dynamicdnsprovider.tld:443
                ServerAlias subdomain2.dynamicdnsprovider.tld 192.168.x.x
                ServerAdmin webmin@domain1.tld
[...]
</VirtualHost>
</IfModule>
Bleibt IfModule mod_ssl.c auch für letsencrypt das richtige Apache-Modul?
Danke fürs Lesen und Eure Gedanken!

DeletedUserReAsG

Re: name-based virtualhosts lets encrypt neben selfsigned ss

Beitrag von DeletedUserReAsG » 16.06.2016 17:02:10

Mit nur einer IP ist es meines Wissens nicht möglich, mehrere virtuelle Hosts (Domains) mit SSL zu hosten.
Das geht mittlerweile recht problemlos (Stichwort: SNI), und wie mod_ssl zu benutzen ist, steht in der Doku.

webminbw
Beiträge: 14
Registriert: 01.05.2016 02:33:36

Re: name-based virtualhosts lets encrypt neben selfsigned ss

Beitrag von webminbw » 16.06.2016 21:15:04

Hat geklappt indem ich den selbst signierten Schlüssel ersetzt habe, den unteren virtualhost nach vorne gezogen habe. Vielen Dank! :hail: Die komplette Lösung wird nach dem Spiel nachgereicht;-)

Antworten