일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- jsp
- db
- Oracle
- tool
- java
- springboot
- linux
- Spring
- MySQL
- php
- ubuntu
- 맛집
- Spring Boot
- Spring Batch
- redis
- Web Server
- laravel
- elasticsearch
- JVM
- IntelliJ
- 요리
- Design Patterns
- AWS
- jenkins
- it
- ReactJS
- javascript
- Gradle
- devops
- Git
- Today
- Total
아무거나
[ubuntu] Let's Encrypt 사용하여 무료 SSL 사이트 구축방법 본문
ubuntu 16.04 기준
1. 인증서 관련 설치
apt-get install letsencrypt
- 참고 : Domain Control Validation 의 3가지 방법 (https://support.comodo.com/?/Knowledgebase/Article/View/791)
- Let’s Encrypt 는 위의 도메인 인증방법 중 3번째인 HTTP(HTTPS)-based DCV 를 사용하여 인증한다.
2. example
예제 1 : # letsencrypt certonly --webroot --webroot-path=/home/ssl-demo-1404/www -d ssl-demo-1404.lael.be
예제 2 : # letsencrypt certonly --webroot --webroot-path=/home/ssl-demo-1604/www -d ssl-demo-1604.lael.be
예제 3 : # letsencrypt certonly --webroot --webroot-path=/home/banana/www -d banana.com -d www.banana.com
예제 4 : # letsencrypt certonly --webroot --webroot-path=/home/laelbe/blog -d lael.be -d www.lael.be -d blog.lael.be -d myhome.lael.be
* 명령어 설명
-d 는 도메인명을 지정하면 된다. 최대 100개의 도메인 이름을 지정할 수 있다. (한 인증서가 서로다른 100개의 도메인 인증을 할 수 있음) 일반적으로는 기본도메인과 www 도메인 두개를 지정한다.
-webroot 는 웹인증을 받을 것이라는 것이다. 외부 인증프로그램이 -d 에 지정된 도메인 사이트에 접속한다.
-webroot-path 는 웹루트의 경로이다. 보통 index 페이지가 위치하는 경로이다. 인증 프로그램이 이 경로에 임시 랜덤 파일을 생성하고, 외부 인증프로그램이 이 파일을 접근할 수 있다면 Domain Validation 이 되는 것이다.
발급 성공
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/bkjeon1614.vps.phps.kr/fullchain.pem. Your
cert will expire on 2017-07-02. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
- If you like Let's Encrypt, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
3. 인증서 파일들 관련 설명
- /etc/letsencrypt/live/[인증서명]/ 위치에 발급된다.
cert.pem - 인증서 파일
chain.pem - 인증서 발급자 파일
fullchain.pem - cert.pem 과 chain.pen 을 하나로 합쳐놓은 파일
privkey.pem - 인증암호를 해독하는 개인키
Apache2 서버에서는 cert.pem, chain.pem, privkey.pem 을 사용합니다.
Nginx 서버에서는 fullchain.pem, privkey.pem 을 사용합니다.
4. 웹서버별 적용방법
----- apache2 적용 방법( VirtualHost 영역을 하나 더 추가 ) -----
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
SSLCertificateFile "/etc/letsencrypt/live/bkjeon1614.vps.phps.kr/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/bkjeon1614.vps.phps.kr/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/bkjeon1614.vps.phps.kr/chain.pem"
---- nginx 적용방법 ----
dhparam.pem 파일은 한번만 생성하면 된다.
# openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
listen 443 ssl http2;
server_name ssl-demo-1604.lael.be;
root /home/ssl-demo-1604/www;
client_max_body_size 10M;
ssl_certificate "/etc/letsencrypt/live/ssl-demo-1604.lael.be/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/ssl-demo-1604.lael.be/privkey.pem";
ssl_dhparam "/etc/ssl/certs/dhparam.pem";
5. 안될 경우
- sudo apt-get install apache2 python-letsencrypt-apache
- sudo letsencrypt --apache -d bkjeon1614.vps.phps.kr
6. 크론탭 등록(자동갱신)
- sudo crontab -e
- 30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log 추가
'Infra > Linux & Unix' 카테고리의 다른 글
[ubuntu] htop 설치 (프로세스 뷰어) (0) | 2019.12.26 |
---|---|
열린 포트 확인(LISTEN) (0) | 2019.06.11 |
file encoding 확인 (0) | 2019.04.22 |
서버 열린 포트 확인 (0) | 2019.04.22 |
파일 라인 수 출력 (0) | 2019.04.22 |