"서버 인증서에 서버 이름과 일치하는 ID가 포함되어 있지 않습니다" 오류란?
Apache 또는 이와 유사한 웹 호스팅 기술로 구동되는 서버에 SSL을 설정하다 보면, "서버 인증서에 서버 이름과 일치하는 ID가 포함되어 있지 않습니다"라는 오류 메시지를 만나게 될 수 있습니다. 엄밀히 말하면 이것은 단순한 경고일 뿐이며, 이론적으로는 무시하고 넘어갈 수도 있습니다.
하지만 약간의 문제 해결 작업을 통해 정상 상태로 되돌리는 것이 훨씬 바람직합니다. 서버 이름과 인증서가 서로 일치하도록 설정해 두면, 이후 시스템을 업데이트할 때 같은 작업을 반복할 필요가 없습니다. 간단한 파일 편집으로 해결되지 않는 경우 일부 파일을 다시 생성해야 할 수도 있지만, 한 번만 제대로 설정해 두면 추가 구성 작업은 필요하지 않습니다.
방법 1: httpd.conf 파일 편집
먼저 httpd.conf 파일을 열어 내용을 확인하세요. Debian이나 Ubuntu 서버에서는 일반적으로 /etc/apache2/ 디렉터리 아래에 위치하며, Fedora, Red Hat, CentOS 환경에서는 /etc/httpd/conf/httpd.conf 경로에 있는 것이 일반적입니다. 파일 안에서 "서버 인증서에 서버 이름과 일치하는 ID가 포함되어 있지 않습니다"라는 경고와 관련된 설정 부분을 찾아보세요.
오류 메시지에 IP 주소와 함께 443 또는 다른 포트 번호가 표시되고, 그 외의 SSL 문제는 없다면 Apache에게 어떤 포트를 수신(listen)할지 알려주지 않았을 가능성이 높습니다. 이 경우 설정 파일에서 Listen 80이라는 줄을 찾은 뒤, 그 아래에 필요한 포트를 추가합니다:
Listen 443파일을 저장하고 닫은 후에는 다음 명령으로 httpd 프로세스를 재시작할 수 있습니다:
sudo systemctl restart httpdUbuntu나 Debian 서버를 사용하는 경우 이 파일이 존재하지 않거나 완전히 비어 있을 수 있습니다(Fedora나 RHEL의 일부 버전과 다른 점입니다). 이럴 때는 /etc/apache2/ports.conf 파일을 편집하여 수신할 포트를 추가하면 됩니다.
대부분의 경우 여기까지 진행하면 문제가 해결됩니다. 만약 그렇지 않다면, 인증서 상태를 점검하기 전에 관련 네트워크 설정에 문제가 없는지 먼저 확인하세요.
방법 2: 새 인증서 재생성
직접 서명한(self-signed) 인증서가 만료된 경우에도 동일한 경고 메시지가 나타날 수 있습니다. 인증서를 다시 생성해야 한다면, 먼저 cat 명령으로 SSL 설정 파일을 확인하고 File과 KeyFile로 표시된 두 줄을 찾으세요. 이 항목들은 SSL 인증서 생성 시 인증서 파일과 키 파일의 저장 위치를 나타냅니다.
공식 웹 인증서를 발급하는 전문 인증 기관(CA)을 통해 인증서를 운영하고 있다면, 해당 기관이 제공하는 안내 절차를 따르는 것이 좋습니다. 그렇지 않은 경우에는 다음 명령으로 새 인증서를 직접 생성할 수 있습니다:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout KeyFile -out File여기서 KeyFile과 File은 앞서 확인한 실제 파일 경로로 대체해야 합니다. 이렇게 하면 입력용 키 파일과 출력용 인증서 파일, 두 개의 파일 위치가 지정됩니다.
인증서가 단순히 만료되었던 것이라면 위 과정만으로 오류가 해결될 것입니다. 다만 경고 메시지가 완전히 사라지도록 하려면 서비스를 재시작해야 할 수 있습니다.
문제 해결에 도움을 주기 위해 현재 설치된 인증서의 세부 정보를 확인할 수도 있습니다. 인증서에 기록된 이름이 서버 이름과 일치하는지 검사하려면 다음 명령을 실행하세요:
openssl s_client -showcerts -connect ${HOSTNAME}:443${HOSTNAME} 부분에는 실제 호스트명을 입력해야 하며, 다른 포트에서 문제가 발생한다면 443을 해당 포트 번호로 바꿔주면 됩니다.
하나의 장치에 여러 인증서가 설치되어 있고 동일한 IP 주소로 서비스되고 있다면, SNI(Server Name Indication) 정보를 함께 전달해야 합니다. 이 경우 다음 명령을 사용하세요:
openssl s_client -showcerts -connect ${IP}:443 -servername ${HOSTNAME}${IP}에는 실제 IP 주소를, ${HOSTNAME}에는 호스트명을 입력하며, 필요에 따라 443을 다른 포트 번호로 변경하면 됩니다.
마지막으로, CSR(인증서 서명 요청)을 처음 생성할 때 올바른 호스트명이 별칭(SAN/alias) 또는 CN(Common Name)으로 지정되었는지 반드시 확인해야 합니다. 이 부분이 잘못되면 인증서를 새로 발급하더라도 동일한 경고가 계속 나타날 수 있습니다.