LetEncrypt 무료 인증서 발급
예전에는 http 서버 준비해서 인증용 폴더 만들고 파일 올리고 그랬었는데 요즘은 리눅스서 certbot 으로 간단하게 발급이 되었다. 오히려 발급보다 certbot 설치하는데 더 오래 걸린거 같음.
출처 : 섭코딩 블로그 https://subbak2.tistory.com/110
SpringBoot 무료 SSL 인증서 적용하기 (Certbot)
1. 필요성 SSL 인증서 없이 웹 어플리케이션을 서버에 올리면 http로 접속이 되고 아래와 같은 경고가 나타난다. "주의요함" 클릭해보면 보안이 취약하다는 문구가 뜨는게 내가 만들었지만 들어가
subbak2.tistory.com
블로그 참고해서 진행 중 겪은 시행착오는 예전 방식처럼 80 번 서버 열어놓고 acme-challenge 경로를 만들어서 인증요청을 받도록 했던 것이다. 그럴 필요 없이 certbot 을 실행 시키고 있는 시키는 서버로 해당 도메인을 통해 들어오도록 (나는 AP 에서 포트포워딩을 했음) 설정만 되어 있다면 알아서 생성이 되었다.
그리고 두번째 시행착오는 다 끝나고 아래와 같은 오류가 떠서 생성 실패한 줄 알았다.
/var/log/letsencrypt 경로에 저장된 로그 내용을 보니 인증서 생성은 성공하고 뭘하는 지는 모르겠으나 후처리 부분에서 오류가 난 것으로 보였다.
인증서 파일은 " /etc/letsencrypt/live/도메인주소 " 생성이 되므로 해당 위치로 이동하여 인증서를 복사하면된다.
# 절차 요약
1. snapd 를 설치한다.
> yum install epel-release
> yum install snapd
> systemctl enable --now snapd.socket
> ln -s /var/lib/snapd/snap /snap
> systemctl start snapd
2. certbot 을 설치한다.
# snapd 를 최신화
> snap install core
> snap refresh core
# certbot 설치
> snap install --classic certbot
# certbot symbolic link 설정
> ln -s /snap/bin/certbot /usr/bin/certbot
3. 인증서 발급
> certbot certonly --standalone -d 도메인
# standalone 모드로 도메인의 인증서를 생성함.
# 이메일 , 약관동의 입력 완료 후
# /etc/letsencrypt/live/도메인/ 경로에 pem 인증서들이 생성된다.
# 이 명령을 수행하는 컴퓨터로 인증서를 만들려는 도메인을 통해 http 80번 포트로 접속할 수 있도록 포트 포워딩/방화벽 해제한 상태여야 한다.
4. springboot 용 인증서로 변환
> openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem
-out keystore.p12 -name 임의alias명 -CAfile chain.pem -caname root
# 비밀번호 입력을 완료하면 keystore.p12 파일이 생성됨.
이렇게 생성하고 나면 systemd timer 에 등록이 되어 만료 전에 자동으로 갱신을 해준다고 함.
# 아래 명령으로 등록된 타이머 작업 확인 가능
> systemctl list-timers