How To Secure Nginx with Let's Encrypt on Ubuntu 16.04
위 챗 애플 릿 을 만들어 아이들 의 사 이 트 를 위 챗 에서 노인 들 에 게 보 여주 고 위 챗 애플 릿 을 만들어 웹 사이트 가 https 라 고 요구 하고 싶 었 습 니 다. 저도 인증 서 를 사기 가 아까워 서 Let 's Encrypt 에서 제공 하 는 무료 인증 서 를 사용 하려 고 했 습 니 다.
환경.
순서
소프트웨어 를 설치 하 다
apt-get -y install letsencrypt;
# letsencrypt Let's Encrypt
# certbot Ubuntu 16.04
인증서 가 져 오기
letsencrypt certonly \
--webroot \
-w /opt/www/blog.xiaoyuer.cn \
-d blog.xiaoyuer.cn;
letsencrypt certonly
--webroot \
-w /opt/www/blog.lukeyang.us \
-d blog.lukeyang.us;
# blog.xiaoyuer.cn blog.lukeyang.us
# -w -d ,
# ,
# ......
#
# ,
#
Generate Strong Diffie-Hellman Group(optional)
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048;
# 2048
NGINX 의 ssl 인자 설정 (optional)
cat </etc/nginx/snippets/ssl-params.conf
# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
#resolver 8.8.8.8 8.8.4.4 valid=300s;
#resolver_timeout 5s;
# Disable preloading HSTS for now. You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
EOF
# , ssl_dhparam
NGINX 의 가상 컴퓨터 설정
vim /etc/nginx/sites-enabled/blog.xiaoyuer.cn;
server {} 설정 블록 에 다음 내용 을 추가 합 니 다:
listen 443 ssl http2 default_server;
include snippets/ssl-params.conf;
ssl_certificate /etc/letsencrypt/live/blog.xiaoyuer.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.xiaoyuer.cn/privkey.pem;
location ~ /.well-known {
allow all;
}
마찬가지 로
vim /etc/nginx/sites-enabled/blog.lukeyang.us;
server {} 설정 블록 에 다음 내용 을 추가 합 니 다:
listen 443 ssl http2;
include snippets/ssl-params.conf;
ssl_certificate /etc/letsencrypt/live/blog.lukeyang.us/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.lukeyang.us/privkey.pem;
location ~ /.well-known {
allow all;
}
주의:
이 설정 의 listen 443 ssl httpd 2 줄 에는 default 가 없습니다.server 글꼴, 그것 은 하나의 포트 입 니 다. default 만 있 기 때 문 입 니 다.server, 앞 에 있 는 허 기 는 443 포트 에 default 를 지정 하 였 습 니 다.server, 그래서 여 기 는 중복 지정 할 수 없습니다.
NGINX 서비스 다시 시작
systemctl restart nginx.service;
인증서 자동 업데이트 설정
Let 's Encrypt 인증 서 는 3 개 월 후에 만 료 되 기 때문에 공식 도 구 는 자동 으로 업데이트 되 는 기능 을 제공 합 니 다. cron 으로 정기 적 으로 호출 하면 됩 니 다.
cat </etc/cron.d/renew_ssl
25 3 * * 3 root /usr/bin/letsencrypt renew>/var/log/le-renew.log"
35 3 * * 3 root /bin/systemctl reload nginx
EOF
이 논 리 는 일주일 에 한 번 씩 인증 서 를 업데이트 해 야 하 는 지, 필요 하 다 면 자동 으로 인증 서 를 업데이트 하 는 것 이다.검사 가 끝나 면 nginx 의 reload 작업 을 한 번 더 하고 새 인증 서 를 다시 불 러 옵 니 다 (있 으 면).
레 퍼 런 스
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.