Apache: 하위 도메인을 "숨기지만" https를 통해 서비스하는 방법

Apache: 하위 도메인을 "숨기지만" https를 통해 서비스하는 방법

나는 나의 무지, 혹은 아마도 위험할 만큼 충분한 지식을 자유롭게 인정할 것입니다.

http://db.<mydomain>.comphpMyAdmin 유틸리티를 제공하는 하위 도메인이 있습니다 . 현재 phpMyAdmin 로그인 페이지를 일반 대중에게 공개하고 싶지 않기 때문에 .htaccess의 유효한 사용자를 요구하는 Apache 지시문이 있는 디렉토리에 있습니다.

이로 인해 발생한 문제는 내 사이트에 대한 SSL 인증서를 생성하기 위해 cert-bot을 사용하려고 시도하는 것이었습니다. 챌린지가 .htaccess 제한을 통과할 수 없기 때문에 ACME 챌린지를 확인할 수 없습니다.

사용자가 phpMyAdmin 로그인 페이지를 볼 수 있기 전에 추가 보안 계층을 요구하는 동시에 https를 통해 이 하위 도메인을 제공하려면 어떻게 해야 합니까?

   <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>

답변1

<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>

Order및 지시문을 제거해야 합니다 Allow. 이는 이전 스타일의 Apache 2.2 지시어이며 이전에는 Apache 2.4에서 더 이상 사용되지 않으며 충돌을 일으킬 가능성이 있습니다(그러나 어쨌든 필수는 아닙니다).

<Directory>에 대한 섹션이 있는 이유가 궁금하지만 /var/www/subdomains/dbDocumentRoot?/var/www/subdomains/db/phpMyAdmin

그런 다음 무제한 액세스를 허용하는 파일 경로 <Directory>에 대한 추가 섹션을 추가하십시오 . 그러면 certbot이 "ACME 챌린지를 검증"할 수 있습니다. /.well-known/예를 들어:

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

답변2

이 문제를 해결하는 방법에는 최소한 세 가지가 있습니다.

  1. 사용DNS 챌린지, HTTP 연결이 필요하지 않음
  2. .well-known/-path 에 대한 기본 인증 비활성화certbot이 사용하는 것입니다.
  3. certbot의 독립형 모듈을 사용하십시오. 이로 인해 10~20초의 가동 중지 시간이 발생합니다.

답변3

한 가지 가능한 방법은 다음과 같이 가상 호스트에 대한 액세스 제한을 추가하는 것입니다.

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

지침 에 대한 자세한 내용을 보려면 다음 Require사이트를 방문하세요.아파치 문서.

관련 정보