무료 SSL/TLS 인증서 - Let's Encrypt
Let's Encrypt는 사용자에게 무료로 TLS 인증서를 발급해주는 비영리기관이다.
발급된 인증서는 유효기간이 90일이며 만료 30일 전부터 갱신할 수 있으며, 갱신 가능 횟수는 무제한이다.
인증서 가격이 3만 원에 이르고 와일드카드의 경우 15만 원에 이르러 1년 동안 제공되지만 돈 없는 일반인에게는 부담되는 가격이지만, 이런 점들을 해결해 준다.
SSL 인증서 발급(CentOS)
1. 설치
$ yum install epel-release
$ yum install python-certbot-apache
2. SSL인증서 발급
도메인 별로 인증서를 발급받아야 한다. 인증서 생성 방식은 webroot이고, -w 에는 해당 도메인의 프로젝트 위치 -d 는 hosts에 등록된 도메인 (또는 관련 도메인) -email은 관리자 메일이다.
$ certbot certonly --webroot -w /usr/local/tomcat/ -d www.test.com --email test@naver.com
인증서를 만들면 [/etc/letsencrypt/live] 경로에 도메인 별로 파일이 생성된다
해당 파일에 들어가면, 4개의 key가 생성된 것을 확인할 수 있다.
3. SSL인증서 발급 확인
발급받은 인증서들에 대한 정보들이 표시가 된다.
$ certbot certificates
4. SSL인증서 삭제
인증서를 원래 발급했었고, 인증서 발급에 사용한 계정을 계속 제어할 수 있는 경우, 계정 자격 증명을 사용하여 인증서를 해지한다.
$ certbot revoke --cert-path /etc/letsencrypt/archive/www.test.com/cert1.pem
5. SSL인증서 갱신
잘 갱신되는지, 명령에 오류가 나진 않는지 등을 테스트해 볼 수 있다. 오류가 발생했다면, 오류를 수정해주고, 아무 문제 가 없다면 갱신이 문제없이 이루어진다.
$ certbot renew --dry-run
6. SSL인증서 자동갱신
유효기간이 90일이며 만료 30일 전부터 갱신할 수 있다. sudo를 사용하여 crontab을 등록하여 갱신한다.
$ sudo crontab -l # Crontab 보기
$ sudo crontab -e # Crontab 편집
contab에 등록
# 2개월마다 갱신을 하며 1일 새벽4시에 갱신을 하고 로그를 기록한다.
0 4 1 */2 * root /usr/bin/certbot renew >> /var/log/letsencrypt/renew.log
SSL인증서 tomcat적용
1. jks로 변경하여 사용하기(pem ->pkcs12-> jks)
inkey는 [/etc/letsencrypt/live/도메인명/] 경로에 있는 key이다
# pem -> pkcs12 / 패스워드 입력
$ openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name tomcat -CAfile chain.pem -caname root
# pkcs12 -> jks / 패스워드는 위의 openssl 사용 시 사용했던 패스워드 사용
$ keytool -importkeystore -deststorepass {password} -destkeypass {password} -destkeystore letsencrypt.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass {password} -alias tomcat
2. 도메일 별 pem 사용
server.xml을 수정한다. 도메인으로 등록된 host를 지정하여, 도메인 별 SSL을 사용한다.
<Connector URIEncoding="UTF-8" port="443" server=" " protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="www.test.com">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig hostName="www.test.com">
<Certificate certificateKeyFile="/etc/letsencrypt/live/www.test.com/privkey.pem"
certificateFile="/etc/letsencrypt/live/www.test.com/cert.pem"
certificateChainFile="/etc/letsencrypt/live/www.test.com/chain.pem"
type="RSA" />
</SSLHostConfig>
<SSLHostConfig hostName="www.test2.com">
<Certificate certificateKeyFile="/etc/letsencrypt/live/www.test2.com/privkey.pem"
certificateFile="/etc/letsencrypt/live/www.test2.com/cert.pem"
certificateChainFile="/etc/letsencrypt/live/www.test2.com/chain.pem"
type="RSA" />
</SSLHostConfig>
<SSLHostConfig hostName="www.test3.com">
<Certificate certificateKeyFile="/etc/letsencrypt/live/www.test3.com/privkey.pem"
certificateFile="/etc/letsencrypt/live/www.test3.com/cert.pem"
certificateChainFile="/etc/letsencrypt/live/www.test3.com/chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
인증서를 발급받고, 자동갱신이 되었는지, 아직 확인은 하직 못했다. 2개월이 지나서 자동갱신이 된다면 기록하겠다.😋
letsencrypt 사이트에 들어가면, OS별 자세한 사용방법이 나와있다.
'개발 > Linux' 카테고리의 다른 글
[Linux/Ubuntu] apt-get update오류 Hash sum mismatch (0) | 2021.04.11 |
---|---|
[Linux/Ubuntu] E: Unable to lock directory /var/lib/apt/lists/ 처리 (1) | 2021.01.29 |
[Linux/Ubuntu] openssl 설치(+wget 사용) (0) | 2021.01.07 |
[Linux/Ubuntu] su : Authentication failure (0) | 2021.01.06 |
[Linux/Ubuntu] 최근 파일 N개를 제외한 파일 전부 삭제 (0) | 2021.01.04 |