Apache: So „verstecken“ Sie eine Subdomain, stellen sie aber über https bereit

Apache: So „verstecken“ Sie eine Subdomain, stellen sie aber über https bereit

Ich gebe meine Unwissenheit offen zu – oder vielleicht auch, dass mein Wissen ausreicht, um gefährlich zu sein.

Ich habe eine Subdomain http://db.<mydomain>.com, die das Dienstprogramm phpMyAdmin bedient. Sie befindet sich derzeit in einem Verzeichnis mit einer Apache-Anweisung, die einen gültigen Benutzer aus .htaccess anfordert, was damals sinnvoll war, da ich die Anmeldeseite von phpMyAdmin nicht der Öffentlichkeit zugänglich machen möchte.

Das dadurch entstandene Problem bestand darin, dass ich versuchte, mit Cert-Bot SSL-Zertifikate für meine Site zu erstellen. Die ACME-Challenge konnte nicht validiert werden, weil die Challenge die .htaccess-Einschränkung nicht überwinden konnte.

Wie kann ich diese Subdomäne gleichzeitig über https bereitstellen und gleichzeitig eine zusätzliche Sicherheitsebene anfordern, bevor ein Benutzer die phpMyAdmin-Anmeldeseite sehen kann?

   <VirtualHost *:80>
        ServerName db.<mydomain>.com
        ServerAlias www.db.<mydomain>.com
        DocumentRoot /var/www/subdomains/db/phpMyAdmin
    </VirtualHost>
    <Directory "/var/www/subdomains/db">
        Options Indexes FollowSymLinks ExecCGI
        Order allow,deny
        Allow from all
        AuthType Basic
        AuthUserFile "/var/www/.htpasswd-users"
        require valid-user
    </Directory>

Antwort1

<Directory "/var/www/subdomains/db">
    Options Indexes FollowSymLinks ExecCGI
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthUserFile "/var/www/.htpasswd-users"
    require valid-user
</Directory>

OrderSie sollten die Anweisungen und entfernen Allow. Dabei handelt es sich um Anweisungen alten Stils aus Apache 2.2, die unter Apache 2.4 veraltet waren und wahrscheinlich Konflikte verursachen (sie sind aber ohnehin nicht erforderlich).

Obwohl ich mich frage, warum Sie einen <Directory>Abschnitt für haben /var/www/subdomains/db, obwohl das DocumentRootals definiert ist /var/www/subdomains/db/phpMyAdmin?

Fügen Sie dann einen zusätzlichen <Directory>Abschnitt für den /.well-known/Dateipfad hinzu, in dem Sie uneingeschränkten Zugriff erlauben – damit der Certbot die „ACME-Challenge validieren“ kann. Beispiel:

<Directory "/var/www/subdomains/db/phpMyAdmin/.well-known">
    Require all granted
</Directory>

Antwort2

Es gibt mindestens drei Möglichkeiten, dieses Problem zu lösen:

  1. Verwenden Sie dieDNS-Herausforderung, erfordert keine HTTP-Verbindung
  2. Deaktivieren Sie die Basisauthentifizierung für .well-known/-pathdas von Certbot verwendet wird.
  3. Verwenden Sie das Standalone-Modul von certbot. Dies führt zu 10-20 Sekunden Ausfallzeit

Antwort3

Eine Möglichkeit besteht darin, Zugriffsbeschränkungen für den virtuellen Host wie folgt hinzuzufügen:

<Directory "/www/docs/db">
    <RequireAll>
        Require ip <localip> <certbot host-name>
    </RequireAll>
</Directory>

Weitere Informationen zur RequireRichtlinie finden Sie unterApache-Dokumentation.

verwandte Informationen