Virtualhost에서 내 와일드카드 하위 도메인에 대한 SSL 파일을 로드하고 있지만 두 번째 가상 호스트가 첫 번째 가상 호스트의 SSL 파일을 로드하고 브라우저에서 잘못된 인증서 오류를 보고합니다.
구성은 다음과 같습니다
<VirtualHost *:443>
ServerName cert-1.domain.com
ServerAlias cert-1.domain.com,*.net.domain.com
DocumentRoot /home/myuser/public_html
ServerAdmin [email protected]
UseCanonicalName Off
<IfModule mod_suphp.c>
suPHP_UserGroup myuser myuser
</IfModule>
<IfModule suexec_module>
<IfModule !mod_ruid2.c>
SuexecUserGroup myuser myuser
</IfModule>
</IfModule>
<IfModule ssl_module>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/cert-1.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cert-1.domain.com/privkey.pem
</IfModule>
</VirtualHost>
<VirtualHost *:443>
ServerName cert-2.domain.com
ServerAlias cert-2.domain.com,*.org.domain.com
DocumentRoot /home/myuser/public_html
ServerAdmin [email protected]
UseCanonicalName Off
<IfModule mod_suphp.c>
suPHP_UserGroup myuser myuser
</IfModule>
<IfModule suexec_module>
<IfModule !mod_ruid2.c>
SuexecUserGroup myuser myuser
</IfModule>
</IfModule>
<IfModule ssl_module>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/cert-2.domain.com-2/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cert-2.domain.com-2/privkey.pem
</IfModule>
</VirtualHost>
하지만 everything.org.domain.com을 방문하면 두 번째 가상 호스트 대신 첫 번째 가상 호스트에 대한 SSL 파일이 로드됩니다.
첫 번째 또는 두 번째 가상 호스트에 없는 하위 도메인을 시도하더라도 여전히 첫 번째 가상 호스트 SSL 파일이 로드되고 브라우저에서 잘못된 SSL 오류가 발생합니다.
이 문제를 어떻게 해결할 수 있나요?
감사해요
답변1
서버 별칭은 쉼표가 아닌 공백으로 구분되어야 하므로 줄은 ServerAlias
다음과 같아야 합니다.
ServerAlias cert-1.domain.com *.net.domain.com
단일 블록에 더 많은 ServerAlias
지시문을 지정할 수 있으므로 별칭이 많은 경우 구성을 좀 더 읽기 쉽게 만듭니다.
명시적인 구성이 존재하지 않는 호스트를 요청하는 경우 Apache는 찾은 첫 번째 블록을 제공합니다(이것이 바로 "포괄" 사이트를 갖기 위해 마지막 위치에 VirtualHost
블록을 포함하는 것이 좋은 이유입니다).ServerAlias *
따라서 귀하의 경우에는 ServerAlias
"cert-2.domain.com,*.org.domain.com"을 갖는 서버에 대한 별칭을 정의하기 때문에 어떤 줄도 작동하지 않습니다(어쨌든 예상한 대로는 아닙니다). 이름, 쉼표, 별표 및 모두 포함. 이를 위해 "anything.org.domain.com"을 요청하면 Apache는 이 호스트 이름이 구성에 정의되어 있지 않기 때문에 발견한 첫 번째 블록을 제공합니다.