서버클라우드에 무료 SSL인증서를 발급하기 [ 리눅스 ]
본 메뉴얼은 Let's Encrypt FreeSSL/TLS 무료인증서에 대하여 설명합니다.
Let's Encrypt FreeSSL/TLS은 Mozilla, Cisco, Akamai, EFF, id entrust 등이 모여서
ISRG(Internet Security Research Group)라는 SSL 인증기관을 만들어 SSL을 무료로 제공하고 있으며,
최근에는 Facebook, 워드프레스를 만드는 Automattic, shopify 등 많은 회사가 스폰서로 참여하고 있습니다.
IWINV 는 "서버클라우드" 이용시 Let's Encrypt FreeSSL/TLS 무료 인증서의 발급/갱신 절차를
"기술지원 서비스"를 통해 제공합니다. [ 기술지원 요청에 따른 작업비용 별도 ]
SSL 간단한 동작 과정
SSL(Secure Socket Layer)은 웹사이트의 전송 데이터를 https 프로토콜을 사용하여 암호화 통신하며,
웹사이트 전체 또는 개인정보 등의 데이터 전송시 암호화여 안전한 데이터 전송이 가능하게 해주는 기술입니다.
1. 웹브라우저에서 https://도메인 입력으로 SSL로 암호화된 페이지를 요청.
2. 웹서버에서 Public Key를 인증서와 함께 전송.
3. 웹브라우저에서 인증서가 자신이 신용있다고 판단한 CA(일반적으로 trusted root CA라고 불림)로부터
서명된 것인지 확인.
4. 웹브라우저에서 Public Key를 사용해서 랜덤 대칭 암호화키(Random symmetric encryption key)를 비롯한
URL, http 데이터들을 암호화해서 전송.
5. 웹서버의 Private Key를 이용해서 랜덤 대칭 암호화키와 URL, http 데이터를 복호화.
6. 웹서버는 요청받은 URL에 대한 응답을 웹브라우저로부터 받은 랜덤 대칭 암호화키를 이용하여 암호화해서
브라우저로 전송.
7. 웹브라우저에서 대칭 키를 이용해서 http 데이터와 html문서를 복호화하고, 화면에 표시.
Let's Encrypt - 무료 SSL 설치 방법 [ Linux ] (CentOS 7, CentOS8, Ubuntu 16 ~ 22)
※ Let's Encrypt 를 통해 인증서를 발급받기 위해서는 Let's Encrypt 클라이언트가 필요하며, Python 2.5 이상의 패키지가 설치되어 있어야 합니다.
▶ Let's Encrypt 클라이언트 다운로드
certbot 클라이언트가 설치 [ 사전설치 ] |
▶ 인증서 발급
# certbot certonly --webroot --agree-tos -m [서버관리자이메일] -w [웹루트 디렉토리 위치] -d [도메인 1] -d [도메인 2(보통 www.원도메인)] -d [도메인 3] --rsa-key-size 4096
--webroot : 발급받는 방식 -a : authenticator plugin --agree-tos : ACME 서버의 가입자 동의서에 동의 --rsa-key-size : 인증서 키 사이즈 기본은 2048 -w : web document root path -m : 이메일 주소 -d : SSL 발급 도메인명 인증서 생성 경로 예시 |
▶ 인증서 삭제
발급된 인증서의 삭제는 “certbot” 을 이용하여 삭제해야 추후 다시 발급할 수 있으며, 인증서 삭제 명령 후 인증서가 생성되었던 경로 등을 확인해 보면, 또는 # certbot revoke --cert-path /etc/letsencrypt/live/도메인/cert.pem |
▶ 인증서 업데이트(갱신)
# certbot renew 갱신을 할 수 있는 기간은 인증서 기간 중 61일 ~ 90일 사이에 갱신을 할 수 있습니다. |
▶ 인증서 자동 갱신 설정 crontab
# vi /etc/crontab 30 4 1,16 * * root /usr/bin/certbot renew 32 4 1,16 * * root systemctl reload httpd (httpd 패키지 설치) 32 4 1,16 * * root /etc/init.d/apachectl graceful (httpd 소스 설치)
# systemctl restart crond (Redhat 계열) # systemctl restart cron (Debian 계열) |
▶ Apache 모듈 확인
# ps -ef | grep httpd /usr/local/apache/bin/httpd -k start 로 결과값이 출력되면 소스설치 /sbin/httpd 로 결과값이 출력되면 패키지설치
# which apachectl 결과값 확인하여 환경변수 안되어 있다면 설정합니다.
apahce 2.4기준 # /usr/local/apache/bin/apachectl -M | grep -E 'ssl|socache' socache_shmcb_module (shared) socache_dbm_module (shared) ssl_module (shared)
apahce 2.4 httpd.conf LoadModule socache_shmcb_module modules/mod_socache_shmcb.so LoadModule socache_dbm_module modules/mod_socache_dbm.so LoadModule ssl_module modules/mod_ssl.so
apache 2.2 httpd.conf LoadModule ssl_module modules/mod_ssl.so
-> 주석처리를 풀것 |
▶ Apache 설정
DocumentRoot 웹루트경로 ServerName 도메인명 ServerAlias 도메인명 SSLEngine on SSLCertificateFile /etc/letsencrypt/live/도메인명/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/도메인명 /privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/도메인명/fullchain.pem
privkey.pem = key파일 |
▶ 무료 인증서 사용시 주의사항
1. 인증서 관련 피해 발생시 손해보험사의 보상을 받을 수 없습니다.
2. Windows XP SP3 이하 이용자는 정상적인 SSL 통신이 되지 않습니다.
3. 일부 브라우저의 경우 호환성 문제가 발생할 수 있습니다.
4. 인증서의 만료일은 90일입니다.
※ "온라인 기술지원" 서비스를 통해 IWINV 에서 Let'sencrypt 인증서 발급시 자동 갱신 프로세스가 제공됨
▶ 호환성
Compatible |
Incompatible |
Mozilla Firefox >= v2.0 Google Chrome Internet Explorer on Windows XP SP3 and higher Microsoft Edge Android OS >= v2.3.6 Safari >= v4.0 on macOS Safari on iOS >= v3.1 Debian Linux >= v6 Ubuntu Linux >= v12.04 NSS Library >= v3.11.9 Amazon FireOS (Silk Browser) Cyanogen > v10 Jolla Sailfish OS > v1.1.2.16 Kindle > v3.4.1 Java 7 >= 7u111 Java 8 >= 8u101 |
Blackberry OS v10, v7, & v6 Android < v2.3.6 Nintendo 3DS Windows XP prior to SP3 cannot handle SHA-2 signed certificates Java 7 < 7u111 Java 8 < 8u101 Windows Live Mail (2012 mail client, not webmail) cannot handle certificates without a CRL |
▶ Let's Encrypt FreeSSL/TLS Major Sponsors