IT News/개발정보

Server Certificate Does NOT Include an ID Which Matches the Server Name 이라고 나올때 해결 방법(UBUNTU 22.04)

skyLove1982 2023. 10. 7. 02:55
반응형

우분투 apache2 ssl 설정파일 내용 일부분

ssl 인증서를 설치한 경우에 Server Name(서버 이름)이 정해져 있지 않은 경우에 이러한 에러가 나오게 됩니다. 저는 우분투 서버에서 ssl 무료 인증서를 설치를 해보았는데요. 무료 인증서를 찾아서 하다보니 여러가지 제약사항들이 있는것 같습니다. 아무튼 3개월은 무료이라는 인증서를 설치해 보았습니다.

 

우선 Server Certificate Does NOT Include an ID Which Matches the Server Name 이라는 오류에 대한 해결책은 저의 경우에는 아파치 서버를 사용했는데요. 아파치 설정파일에 ssl 관련 설정파일도 있는데요. 기본적으로 아래의 경로의 파일에 설정 내용이 있습니다. 

/etc/apache2/sites-available/default-ssl.conf

위 설정파일을 복사해서 다른 이름으로 사용을 해도 되는데요. 아래의 예시와 같이 작성했습니다. 참고로 test.kr 은 예시로사용했습니다. 그리고 ssl 포트번호가 기본 443 인데요. 다른 포트를 사용하신다면 변경을 하셔야 하구요. 참고로 ServerName 에 도메인명 끝에 포트번호가 들어갑니다. (저의 경우 파일 이름을 www.test.kr-ssl.conf 형태로로 설정하였습니다. 왜냐하면 conf 파일을 다 읽어들이기 때문입니다.)

<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin admin@gmail.com
                ServerName www.test.kr:443
                ServerAlias test.kr

                DocumentRoot /var/www/html
                
                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
                
                SSLEngine on

                SSLCertificateFile      /etc/letsencrypt/live/www.test.kr/fullchain.pem
                SSLCertificateKeyFile   /etc/letsencrypt/live/www.test.kr/privkey.pem
                
 				<FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>


        </VirtualHost>
</IfModule>

위의 코드 중에서 중요한 점은 serverName 을 적는 것입니다. 그리고 나서 설정 내용을 다시 적용하려면 아래와 같이 입력하면 됩니다.

sudo systemctl reload apache2
sudo systemctl restart apache2

참고로 아래의 명령어를 실행해보면 에러 로그에  server certificate does NOT include an ID which matches the server name 이라고 나오지 않으면 정상적으로 잘 적용이 된것입니다.

cat /var/log/apache2/error.log

그리고 추가적으로 인증서 종류 나 가격에 따라 다르겠지만 저의 경우에는 LetsEncrypt 인증서를 사용하였구요. 사용하는 도메인 하나씩 인증서를 따로 받아야 했습니다. 우선 1개만 테스트로 해보았는데요. 아직까지는 잘 동작했구요. 3개월 후에 다시 갱신을 해야되는 점이 있습니다. (아마도 무료이기 때문이죠)

 

LetsEncrypt 를 통한 SSL 인증서 발급과 설치방법이 여러개 나와있을텐데요. 팁으로 ssl 인증서 설치 방법도 알고 싶으신 분들을 위해서 몇자 더 적어보았습니다.

1. certbot(letsencrypt) 설치!
$sudo apt-get install certbot

2. https를 적용할 웹 루트로 이동
$cd /var/www/도메인/public_html

3. let’s encrypt 실행
$sudo certbot certonly --webroot -w . -d [사용할도메인주소]
참고로 [사용할도메인주소] 부분에  www.dns.kr 이런 형태로 넣으면 됩니다.

 

위의 3번째 명령어를 실행하게 되면 인증서 키 정보가 표시가 되게 됩니다. 그 정보를 아파치 ssl설정 파일에 넣으시면 됩니다. 참고로 인증서의 남은 기간을 확인하려면 아래와 같이 명령어를 입력하면 됩니다.

$sudo certbot certificates

certbot 인정서 기간확인

인증서가 3개월이라서 자동으로 1개월 마다 즉 매월 1일에 0시 0분에 갱신을 하도록 crontab 에 등록을 하였습니다.

$sudo nano /etc/crontab

certbot 갱신명령어를 crontab 에 등록하는 이미지

 

0 0     1 * *   root    /usr/bin/certbot renew

 

0분 0시 매달1일에 root 권한으로 /usr/bin/certbot 을 실행하고 매개변수로 renew 를 주었습니다. 그러면 자동으로 매달 실행되면서 자동으로 ssl 인증서 갱신이 됩니다.

 

반응형