나는 나의 무지, 혹은 아마도 위험할 만큼 충분한 지식을 자유롭게 인정할 것입니다.
http://db.<mydomain>.com
phpMyAdmin 유틸리티를 제공하는 하위 도메인이 있습니다 . 현재 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/db
은 DocumentRoot
?/var/www/subdomains/db/phpMyAdmin
그런 다음 무제한 액세스를 허용하는 파일 경로 <Directory>
에 대한 추가 섹션을 추가하십시오 . 그러면 certbot이 "ACME 챌린지를 검증"할 수 있습니다. /.well-known/
예를 들어:
<Directory "/var/www/subdomains/db/phpMyAdmin/.well-known">
Require all granted
</Directory>
답변2
이 문제를 해결하는 방법에는 최소한 세 가지가 있습니다.
- 사용DNS 챌린지, HTTP 연결이 필요하지 않음
.well-known/
-path 에 대한 기본 인증 비활성화certbot이 사용하는 것입니다.- certbot의 독립형 모듈을 사용하십시오. 이로 인해 10~20초의 가동 중지 시간이 발생합니다.
답변3
한 가지 가능한 방법은 다음과 같이 가상 호스트에 대한 액세스 제한을 추가하는 것입니다.
<Directory "/www/docs/db">
<RequireAll>
Require ip <localip> <certbot host-name>
</RequireAll>
</Directory>
지침 에 대한 자세한 내용을 보려면 다음 Require
사이트를 방문하세요.아파치 문서.