본문 바로가기
서버환경

5. 무료 SSL 인증서 설치하기(with. certbot)

by 자근물곡이 2023. 2. 27.

Let's Encrypt이라는 기관을 통해 무료로 TLS 인증서를 발급받을 수 있다.

인증서 발급을 위해 certbot이라는 무료 소프트웨어를 사용한다.

 

certbot 홈페이지에서 자신의 서버 사양을 선택하면 그에 맞는 설치 방법을 안내해 준다.

그런데 톰캣은 소프트웨어 목록에 보이지 않는다. 그렇다고 톰캣에 적용하지 못하는 것은 아니다.

snap 설치

certbot 공식 홈페이지에서는 snap을 통해 설치하는 것을 권장하고 있다. 우선 snap을 설치한다.

 

1. epel 패키지 저장소를 설치한다.

$ sudo yum install epel-release

2. epel 패키지 저장소가 유효한지 확인한다.

$ yum repolist enabled

epel 패키지 저장소 확인

3. snapd를 설치하고 버전을 확인한다.

$ sudo yum install snapd

snapd 설치

$ snap --version

snap 버전 확인

4. snap 메인 통신 소켓을 관리하는 systemd를 활성화한다.

$ sudo systemctl enable --now snapd.socket

5. snapd 버전이 최신 버전인지 확인한다.

$ sudo snap install core
$ sudo snap refresh core

6. snap 심볼릭 링크를 생성한다.

$ sudo ln -s /var/lib/snapd/snap /snap

certbot 설치

1. certbot을 설치한다.

$ sudo snap install --classic certbot

certbot 설치

2. certbot 명령을 시스템에서 실행할 수 있도록 준비한다.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

3. certbot 버전을 확인한다.

$ certbot --version

certbot 버전 확인

certbot 실행(인증서 생성)

1. certbot --standalone 을 사용하려면 기존 사이트가 필요하지 않지만 서버 포트 80을 오픈해야 한다.

오라클 클라우드의 경우 VCN을 통해 80 포트를 오픈한다.

참고. 오라클 클라우드 VCN 설정

오라클 클라우드 VCN을 통한 80포트 오픈

2. certbot을 실행한다.

--dry-run 옵션을 사용하면 실제 실행하기 전 시뮬레이션 해 볼 수 있다. (혹시나 실수로 여러 번 실행하게 된다면 too many certificates ... 오류가 발생할 수 있다. 이 경우 한참 뒤에 실행할 수 있기 때문에 시뮬레이션 후 실행하는 것을 추천한다.)

실행을 여러번 하면 too many certificates 오류가 발생한다.

# certbot 실행 시뮬레이션
$ sudo certbot certonly --standalone --dry-run

# certbot 실행
$ sudo certbot certonly --standalone

certbot 실행 및 인증서 생성

3. 생성된 인증서를 확인한다. (인증서가 생성되는 경로는 root 권한으로 접근 가능하기 때문에 sudo su - 명령을 통해 root 권한으로 접속 후 해당 디렉터리로 이동할 수 있다.)

Tomcat 설정

1. 인증서를 톰캣에 적용하기 위해 /conf/server.xml 에 아래와 같이 기존 8080 포트 설정은 제거하고 443 포트 설정을 추가한다. (인증서의 경로는 자신이 생성한 경로에 맞게 수정한다.)

<Connector port="443" 
    protocol="org.apache.coyote.http11.Http11NioProtocol"  
    maxThreads="150"
    SSLEnabled="true">
    <SSLHostConfig>      
        <Certificate certificateKeyFile="/etc/letsencrypt/live/puhaha.kro.kr/privkey.pem"  
                certificateFile="/etc/letsencrypt/live/puhaha.kro.kr/cert.pem"
                certificateChainFile="/etc/letsencrypt/live/puhaha.kro.kr/fullchain.pem"          
                type="RSA" />
    </SSLHostConfig>      
</Connector>

server.xml 편집

2. 설정을 적용했으면 톰캣을 재시작한다.

톰캣 재시작 명령 시 관리자 권한으로 실행해야 톰캣이 정상 구동된다.

톰캣 종료
톰캣 시작

3. SSL 적용 확인

오라클 클라우드의 경우 VCN을 통해 443 포트를 오픈했는지 확인한다.

참고. 오라클 클라우드 VCN 설정

브라우저 주소창 옆 자물쇠 아이콘을 클릭하면 인증서 상세정보를 확인할 수 있다.

Tomcat SSL 적용

인증서 갱신(certbot renew)

Let's Encrypt에서 발급되는 인증서의 유효기간은 3개월이기 때문에 3개월마다 인증서를 갱신해야 한다.

crontab 등을 이용하여 주기적으로 인증서를 갱신한다.

인증서가 갱신된 이후에는 톰캣을 재시작한다.

$ sudo certbot renew

인증서 갱신(--dry-run 으로 정상 실행되는지 시뮬레이션 했다.)

댓글