Apache TLS 인증서 교체와 실제 제공 인증서 확인하기

목차

Apache의 TLS 인증서를 교체하는 절차입니다. 원노트의 발급·설정·갱신 기록을 한 글로 합쳤습니다. 서버 인증서, 개인키, 중간 인증서 체인을 구분하고 Apache와 앞단 LB·웹방화벽 중 어디에서 TLS를 종료하는지 먼저 확인합니다.

파일과 기존 설정 확인

교체할 도메인의 Subject Alternative Name과 만료일을 확인합니다. 개인키는 공유 디렉터리에 두지 않고 제한된 권한으로 보관합니다. 인증서와 키의 공개키가 일치하는지도 확인합니다.

TERMINAL / CONFIG
openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltName
openssl x509 -in server.crt -pubkey -noout | openssl sha256
openssl pkey -in server.key -pubout | openssl sha256
sudo httpd -S

두 공개키 해시가 일치해야 합니다. 인증서 형식은 확장자만으로 확정하지 않습니다. PEM은 텍스트 인코딩 형식이고 PFX·P12는 개인키와 인증서를 함께 담을 수 있는 컨테이너이므로 보관과 변환 시 주의합니다.

가상 호스트 적용

Apache 2.4.8 이상은 SSLCertificateFile에 서버 인증서와 중간 인증서를 순서대로 담을 수 있습니다. fullchain.pem은 발급자의 체인 안내에 맞춰 준비합니다. TLS 버전은 OS·OpenSSL 지원 범위와 서비스 정책을 확인합니다.

TERMINAL / CONFIG
<VirtualHost *:443>
    ServerName blog.example.com
    DocumentRoot /var/www/lieper
    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/fullchain.pem
    SSLCertificateKeyFile /etc/httpd/ssl/server.key
    SSLProtocol -all +TLSv1.2 +TLSv1.3
</VirtualHost>

기존 파일과 설정을 보관한 뒤 원자적으로 교체하는 방식과 롤백 경로를 준비합니다. 암호화된 개인키를 쓰는 서비스는 재기동 시 암호 입력 방식도 확인합니다.

반영과 외부 검증

TERMINAL / CONFIG
sudo httpd -t
sudo systemctl reload httpd
openssl s_client -connect blog.example.com:443 -servername blog.example.com -verify_return_error </dev/null

실제로 제공되는 인증서의 만료일·체인과 애플리케이션 응답을 확인합니다. LB·WAF에서 TLS를 종료한다면 그 장비의 인증서도 별도로 교체해야 합니다. reload가 성공했더라도 기존 연결이나 캐시만 보지 않도록 새 연결로 검증합니다.
참고: https://httpd.apache.org/docs/2.4/mod/mod_ssl.html

웹 › apache
apache 목록