개발 - WEB, WAS, DB

win-acme renewal 404 오류 해결

개미v 2022. 3. 30. 08:37

let's encrypt 무료 인증서를 사용중인데 3개월마다 갱신해줘야 합니다.

3개월이 되어서 갱신하려고 했지만 알 수 없는 404 오류가 나왔습니다.

환경

tomcat으로 4개의 도메인(서비스)를 운영중입니다.

그리고 4개의 도메인을 1개의 인증서로 발급 받았습니다.

오류

Run renewals 를 실행하면 404 오류가 납니다.

wireshark로도 확인해 보았는데 무료인증서 발급하는 서버에서 챌린지 파일 URL을 호출을 하지만 404 오류가 나옵니다.

각 서비스의 webapps/.well-known/acme-challenge/ 경로에 가면 순간적으로 첼린지 파일이 생성 되었다가 사라지는 것을 보면 정상인데 왜 안되는지 모르겠습니다.

해결 과정

순간적으로 파일이 생성되고 사라지다 보니까 톰캣에서 reload하는데 시간이 걸려서 인식을 못하나 의심을 했습니다.

톰캣이 아닌 Apache, nginx를 설치해서 해봤는데 오류 현상은 동일합니다.

3개 모두 파일이 생성되면 0.1초내로 바로 인식하는 것을 보니 reload 시간 문제는 아닙니다.

관리자모드로 실행해도 안되고, 여러가지 옵션(force)등을 해봐도 안됩니다.

해결

win-acme 환경설정 파일을 보니 버그인지 몰라도 이상한 점을 발견했습니다.

저는 4개의 도메인인데 1개의 도메인 설정만 되어 있는 것입니다.

환경설정 파일

C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\◆◆◆◆◆◆◆◆◆◆.renewal.json

 

"ValidationPluginOptions": {
    "Path": "C:/apache-tomcat-9.0.33/webapps_rivestsoft",
    "CopyWebConfig": true,
    "Plugin": "1c77b3a4-5310-4c46-92c6-00d866e84d6b"
},
 

 

그래서 nginx에 모든 root 경로를 저 설정에 맞추고 인증서 갱신 해봤습니다.

    server {
        listen 80;
        server_name www.eoeca.com;
        root C:/apache-tomcat-9.0.33/webapps_rivestsoft;
        index index.html index.htm;
    }
	
    server {
        listen 80;
        server_name www.rivestsoft.com;
        root C:/apache-tomcat-9.0.33/webapps_rivestsoft;
        index index.html index.htm;
    }
	
    server {
        listen 80;
        server_name secret.rivestsoft.com;
        root C:/apache-tomcat-9.0.33/webapps_rivestsoft;
        index index.html index.htm;
    }
	
    server {
        listen 80;
        server_name sso.rivestsoft.com;
        root C:/apache-tomcat-9.0.33/webapps_rivestsoft;
        index index.html index.htm;
    }

win-acme renewal을 실행 합니다.

드디어 성공 했습니다.

요약

1. 기존 톰캣 서비스는 임시 중지

2. win-acme 환경설정 파일 분석

3. 인증서 갱신용으로 임시의 apache(또는 nginx) 설치후 root 경로를 win-acme 경로에 맞게 설정

4. win-acme 인증서 갱신

5. 톰캣 서비스 재기동