웹 서버 관련 프로그램은 아무래도 리눅스가 많습니다. 리눅스로 아파치나 nginx를 돌리는 이용자가 많으니 어쩔 수 없는 듯합니다. 저같이 윈도우로 아파치 서버 돌리는 사람들은 서버 관련 정보나 프로그램을 찾는 것이 쉽지 않네요.
윈도우 서버 관련 질문을 커뮤니티에 올리면 질문에 대한 대답 보다 “리눅스 건너오지 왜 거기서 지롤병이냐” 하는 댓글이 많이 달립니다. 윈도우 아파치 유져는 정말 서럽습니다. ㅠㅠ
SSL 자동 갱신 프로그램도 마찬가지였습니다. 리눅스 환경에서의 프로그램은 많았으나 윈도우 환경에서 SSL 자동 갱신에 프로그램은 정말 찾기 어려웠습니다. 그러다가 “Win-acme“라는 프로그램 하나 건졌네요.
잡설이 길었습니다.
이번 글에서는 “Win-acme“라는 프로그램을 이용해 “Let’s Encrypt“에서 SSL 인증서를 받고, 인증서 자동 갱신까지 한 번에 가보도록 하겠습니다.
이 글의 목차
Let’s Encrypt 는 뭐하는 곳인가
Let’s Encrypt는 사용자에게 무료로 TLS 인증서를 발급해 주는 비영리기관입니다. 물론 해외 서버 입니다.
홈페이지를 운영하는 입장에서는 서버 비용, 도메인 비용, 소프트웨어 비용 등등 지출할 것들이 너무 너무 많은데 무료로 SSL인증서를 발급해줘서 매우 감사하게 생각하고 있습니다.
다만 아쉬운 점은 Let’s Encrypt에서 발급한 인증서는 유효 기간이 3개월밖에 되지 않습니다. 자동으로 갱신했다고 하더라도 인증서 만료 때 정상적으로 갱신이 제대로 되는지 확인하고, 수동으로 갱신하는 분들은 바지런히 클릭질을 해주셔야 합니다. 그나마 다행인점은 갱신 횟수나 기간에 제한이 없어 갱신만 잘해준다면 계속 사용할 수 있습니다.
그러면 어떻게 SSL 인증서를 받아야 할까요? “Let’s Encrypt” 공식 홈페이지에 들어가서 회원가입하고 도메인만 적으면 딱 SSL 인증서가 막 튀어나올 거 같은데 실상은 홈페이지에서 바로 받을수 있는 방법이 없습니다. 커뮤니티에 들어가 보면 여러 인증서 발급 방법에 대한 토론들이 있는데 그것을 참고해야 합니다.
이 글을 보는 여러분들은 걱정하지 마세요. 아래의 글에서 win-acme 프로그램을 이용해서 바로 발급받게 도와드리겠습니다. 토론방에서 헤매지 마세요.
Win-acme 개념 / 다운로드
“Win-acme“는 윈도우 환경에서 Let’s Encrypt 기관의 인증서를 발급 받고 갱신 관리까지 해 주는 소프트웨어입니다. “Win-acme“로 아파치, nginx 서버 말고도 IIS역시 인증서 발급이 가능합니다.
아래의 두개의 링크 중 아무곳에서나 Win-acme 다운로드를 받으세요.
▶ 공식 홈페이지 : https://www.win-acme.com/
▶ 깃허브 : https://github.com/win-acme/win-acme/releases/
공식 홈페이지에 들어가면 우상단에 다운로드가 바로 있습니다. 지금 이 글을 쓰고 있는 현재의 최신 버전은 2.2.6 이네요.
다운로드 받고 압축을 풀어주세요. 인스톨은 필요 없습니다.
Win-acme로 Let’s Encrypt 인증서 발급 받기
원하는 위치에 다운로드 받은 파일을 압축 풀어 줍니다. 그 후 “wacs.exe“파일을 실행합니다.
다음과 같은 초기 메뉴가 나오면 M을 누르고 엔터를 입력하여 전체 옵션으로 인증서를 발급 하기를 선택합니다.
2번 Manual input을 선택합니다.
HOST 부분에 SSL 발급 받을 등록할 도메인을 입력합니다.
여러 도메인을 포함 할때는 위의 ,(콤마) 로 구분해 주면 됩니다.
예를 들면 naver.com,www.naver.com 이런 식으로 하시면 됩니다.
두 번째 항목에서 그냥 “엔터“를 누르면 제일 처음에 입력한 도메인명이 대표 파일명이 됩니다.
“1번 선택“합니다.
도메인이 유효한지 확인하는 절차 입니다. 직접 path를 입력하여도 좋고3번 FTP를 이용해서 인증해도 괜찮습니다. 저는 1번 path로 진행하겠습니다.
유효성검사를 위해 홈페이지 index.php 파일이 있는 root 폴더를 적어주세요.
“path : “에 C:\server\apache\www\ (<-예시) 이런식으로 윈도우 경로명을 적어주시면됩니다.
아래의 Copy default web.config before validation? 항목은
유효성 검서전에 컨피그 파일을 복사하겠냐는 옵션인데 “no” 를 하셔도 무방합니다.
사용할 키 유형을 지정하는 곳입니다. 2번 RSA Key를 선택 합니다.
서버가 nginx, 아파치를 사용한다면 “2번 PEM“을 선택합니다.
이제 거의 다왔습니다. 인증서 PEM파일이 저장될 위치를 지정하는 옵션입니다.
File path : 에 C:\server\SSL(<-예시) 이런식으로 윈도우 경로명을 적어주시면됩니다. 이 경로 PEM 파일이 저장됩니다.
PEM파일에 비밀번호 설정하겠냐는 건데 “1번 None“으로 설정합니다.
위의 같은 질문이 한번 더 나왔습니다. 다른 방법으로 인증서를 추가로 저장하겠냐고 물어보는 것입니다. 이미 PEM으로 저장한다고 했고 더 이상은 필요 없으니 “5번을 선택“합니다.
IIS관련 내용입니다. 아파치 굴릴꺼니깐” 3번으로 패스“합니다.
저는 이미 한번 발급 받았던 인증서라 기존꺼 덮어 씌우겠냐는 질문이 한번 더 나왔습니다. 처음 인증서를 발급 받는 도메인의 경우 Overwrite 질문은 없습니다.
어절씨구 저절씨구 블라블라하면서 정상적으로 Win-acme로 Let’s Encrypt 기관에서 인증서 발급 완료 했다는 메세지가 보입니다.
지정했던 폴더에 이렇게 PEM 파일들이 들어왔다면 정상적으로 발급 받아진 것입니다.
인증서 자동 갱신 주의 사항!!!
“win-acme” 프로그램을 이용하여 인증서를 발급 받았다면 별도의 작업 필요 없이 자동으로 인증서가 갱신 됩니다. 다만 자동으로 갱신되는 방식이 윈도우 작업 스케줄러를 이용하기 때문에 주의가 필요합니다.
Win-acme 에서 처음 지정한 폴더 경로가 하나라도 변경이 발생하면 자동으로 인증서가 갱신 되지 않습니다. 아래와 같은 경우 문제가 발생합니다.
- 당연한 이야기 이지만 운영체제를 밀면 자동 갱신 안됩니다.
- 인증서 발급 이후 win-acme 본체 파일 위치 변경이 없어야 합니다.
- 인증서 발급 이후 PEM파일이 저장되는 폴더가 변경되면 안됩니다.
- 인증서 발급할 때 도메인 유효성 검사를 위해 입력한 경로명에 변경이 생기면 안됩니다.
위에서 인증서 발급 받을 때 C:\server\apache\www\ (<-예시) 이런 식의 index.php 경로명 입력하였었습니다. 갱신할 때도 이 경로가 사용됩니다. - 만약 유효성 검사를 path가 아니라 FTP로 하였다면 FTP접속 아이디와 패스워드, 경로가 바뀌면 안됩니다.
위의 경우 중 한 가지라도 해당한다면 자동 갱신이 되지 않습니다. 이벤트 뷰어 페이지에 들어가 보면 “예약된 작업은 디렉터리가 다른 위치를 가리킨다”는 오류가 발생한 것을 확인할 수 있습니다.
부득이 하게 위에 해당하는 폴더명 중 하나라도 변경 사항이 발생한다면 win-acme 처음 부터 다시 인증서 발급 받아 작업 스케줄러 갱신하세요.
참고로 인증서의 경로나 인증서 파일 자체가 바뀌었을 경우 웹 서버를 재시작 해줘야 새로운 인증서로 적용됩니다.
오늘은 여기까지 입니다. 수고 많으셨습니다.
아파치나 nginx 에 발급받은 SSL 보안 인증서를 적용하는 방법은 아래의 글을 참고해 주세요.
1. 만약에 컴퓨터가 꺼져있다면 스케줄러가 무시되나요?
2. 다음날 컴퓨터를 켰을 경우에 무시된 스케줄을 실행하나요?
궁금하네요 ㅠ
그 부분은 직접 컨트롤 할 수 있습니다. 윈도우 작업 스케줄러에 들어가시면 win-acme 작업 항목에서 작업 시간을 지나쳤을 경우 어떻게 할 지에 대한 명령을 컨트롤 할 수 있습니다.
기본 설정 값은 “예약된 작업시간을 놓친 경우 가능한 대로 빨리 작업 시작” 입니다.
즉 다음날 컴퓨터를 켰다면 윈도우 로그온 하자마자 작업이 진행될 것입니다.