개발노트

고즐의 개발 및 서버 개발 노트

아파치 SSL 인증서 충돌 해결기: 도메인마다 다른 인증서가 뜰 때 대처법

# Apache # SSL # 인증서 # 충돌 # VirtualHost

Server 2025.11.19 20 회 읽음
Server 15일 전 20 회 읽음



HTTPS 경고의 원인은? 인증서가 도메인과 다를 때 표시되는 경우가 많다. aibit.kr에 HTTPS 접속했는데, 갑자기 “주의 요함” 경고가 떴다.

확인해보니 더 황당한 문제였다. aibit.kr에 접속했는데 www.chr.kr  인증서가 적용되어 있었다.


이 문제는 SSL 인증서가 잘못 발급된 것이 아니라, Apache가 SSL 가상호스트(VirtualHost)를 잘못 로드한 것이 원인이었다. 나중에 보니 pem 설정하는 부분이 없는데 이상하게 다른 인증서를 참고해 버린다.


원인 분석: Apache는 conf.d 파일을 “알파벳 순서”로 로드 한다

Apache는 다음과 같은 순서로 설정 파일을 읽는다.

1. /etc/httpd/conf/httpd.conf

2. /etc/httpd/conf.d/*.conf (알파벳 순!)

그 결과 chr.kr SSL 설정 파일이 aibit.kr보다 먼저 로딩되면서

aibit.kr 접속 시 chr.kr 인증서가 기본값으로 적용된 것.


즉, SSL 가상호스트 충돌이었다.



해결 방법: SSL VirtualHost 파일 순서 정리

aibit.kr SSL vhost 파일이 뒤쪽에 있어서 Apache가 인식하지 못하고 있었다.

그래서 파일 이름을 맨 앞에 오도록 변경했다.

sudo mv /etc/httpd/conf.d/vhost-le-ssl.conf /etc/httpd/conf.d/00-aibit-ssl.conf
sudo apachectl -t
sudo systemctl restart httpd

SSL 인증서 확인
이제 정말 aibit.kr 인증서가 적용되고 있는지 확인한다.
echo | openssl s_client -connect aibit.kr:443 2>/dev/null | grep -i "DNS"
정상이라면 다음처럼 출력된다.
DNS:aibit.kr
DNS:www.aibit.kr


최종 VirtualHost 설정(443)

가독성 높게, 한 블록으로 정리한 버전:
<VirtualHost *:443>
    ServerName www.aibit.kr
    ServerAlias aibit.kr

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/www.aibit.kr/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.aibit.kr/privkey.pem

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www. [NC]
    RewriteRule ^ https://www.aibit.kr%{REQUEST_URI} [L,R=301]

    DocumentRoot /home/aibit/public_html
</VirtualHost>


결과: HTTPS 정상 적용

파일 순서만 잡아줬는데 HTTPS 경고가 사라지고
정상적인 SSL 인증서가 로딩 되었다.
여러 도메인을 운영하는 경우 Apache 설정이 꼬일 수 있으니
SSL VirtualHost 로딩 순서는 꼭 체크해야 한다.