Nginx 범 도 메 인 이름 추가 https 무료 SSL 인증서 Let 's Encrypt (certbot) 설치 사용 절차
본 튜 토리 얼 의 설치 환경 은:
아 리 클 라 우 드 우 분투 16.04.3 LTS (GNU / Linux 4.4.0 - 105 - generic x86 64)
STEP 1
Certbot
공식 사이트 에서 명령 을 다운로드 하고 집행 권한 을 설정 합 니 다.wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
certbot-auto
어디 에 두 든 좋 습 니 다. 처음부터 적당 한 곳 을 찾 아 놓 는 것 을 권장 합 니 다. 예 를 들 어 certbot-auto
디 렉 터 리 를 만 들 고 /opt/letsencrypt
을 여기에 두 는 것 을 권장 합 니 다.mkdir /opt/letsencrypt
mv certbot-auto /opt/letsencrypt/
certbot-auto
모든 의존 세트 를 자동 으로 설치 할 수 있 도록 실행
STEP 2
:/opt/letsencrypt/certbot-auto
설치
certbot-auto
를 실행 하 는 과정 에서 아 리 클 라 우 드 서버 는 다음 과 같은 오 류 를 알려 줍 니 다.OSError: Command /opt/eff.org/certbot/venv/bin/python2.7 - setuptools pkg_resources pip wheel failed with error code 2
잘못된 이 유 는
certbot-auto
python 2.7 을 사 용 했 지만 python 3 의 virtualenv 를 호출 했 습 니 다. 시스템 에 여러 버 전의 python virtualenv 가 설치 되 어 있 기 때문에 어떻게 삭제 합 니까?해결 방법:
apt-get purge python-virtualenv python3-virtualenv virtualenv
pip install virtualenv
그리고 설치 실행
certbot-auto
, 드디어 설치 성공!!certbot-auto
실행
STEP 3
범 도 메 인 이름 인증서 생 성sudo ./certbot-auto certonly \
--server https://acme-v02.api.letsencrypt.org/directory \
--manual --preferred-challenges dns -d *.qzcool.com
실행 후 DNS TXT 검증 을 요구 합 니 다. 알림 정 보 는 다음 과 같 습 니 다.
lease deploy a DNS TXT record under the name
_acme-challenge.qzcool.com with the following value:
QcvPzuizmydLs1AmJF-J9eWOfOW7T89i******
Before continuing, verify the record is deployed.
범 도 메 인 이름 분석 은 검증
certbot-auto
이 필요 합 니 다. 도 메 인 이름 공급 자 에 설정 해 야 합 니 다. 하위 도 메 인 이름 은 DNS TXT
으로 설정 되 어 있 습 니 다. 기록 유형 선택 _acme-challenge
기록 은 TXT
기록 값 표시 줄 에 입력 하고 설정 후 다음 명령 을 실행 하여 올 바른 반환 여 부 를 볼 수 있 습 니 다.dig _acme-challenge.qzcool.com txt
QcvPzuizmydLs1AmJF-J9eWOfOW7T89i******
배치 가 끝 난 후에 Enter 를 누 르 면 계속 실행 합 니 다. - Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/qzcool.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/qzcool.com/privkey.pem
Your cert will expire on 2018-12-19. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
그리고 인증 서 를 성공 적 으로 가 져 왔 습 니 다. 인증서 가 생 성 된 디 렉 터 리 를 기억 하고 Nginx 에 설정 해 야 합 니 다.
/etc/letsencrypt/live/qzcool.com/fullchain.pem
/etc/letsencrypt/live/qzcool.com/privkey.pem
구덩이 보충
DNS TXT
당시 에 인터넷 이 공공 네트워크 를 비 추기 위해 도 메 인 이름 을
사이트 로 옮 겼 는데 일련의 구 덩이 를 만 났 다. 원래 무료 인 것 은 여기 서 각종 돈 을 요구 했다.아래 열거: 범 도 메 인 네 임 분석 10 원 / 년 무한 하위 도 메 인 네 임 20 원 / 년 TXT 기록 10 원 / 년 CNAME 기록 설정 10 원 / 년 URL 전환 설정 10 원 / 년 땅콩 껍질 도 메 인 네 임 서버 를 사용 하지 말 라 고 권 합 니 다. 너무 복잡 합 니 다. 내부 맵 서 비 스 를 사용 하면 무료 frp 를 사용 할 수 있 습 니 다. 제 다른 글 frp 사용 튜 토리 얼 은 참고 할 수 있 습 니 다.
처음 사용 하 는
STEP 4
이 라면 nginx
메 인 이름 certbot
설정 을 자동 으로 생 성 한 다음 인증서 설정 을 수정 할 수 있 습 니 다.방문 하 다.https://certbot.eff.org/, 당신 이 사용 하 는 소프트웨어 와 시스템 을 선택 하 십시오. 여기 서 우 리 는 nginx 와 Ubuntu 16.04 를 선택 합 니 다.관련 소프트웨어 를 설치 하 다
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx
인증서 생 성
$ sudo certbot --nginx
알림 입력 에 따라 https 를 추가 할 도 메 인 이름 을 입력 하 십시오. 마지막 으로 생 성 성공 을 알 립 니 다. 도 메 인 이름 에 접근 하면 https 를 사용 할 수 있 습 니 다.
쓰다
nginx -t
nginx
의 설정 디 렉 터 리 를 보고 내 서버 의 설정 디 렉 터 리 nginx
를 보고 설정 파일 을 수정 합 니 다.vim /etc/nginx/sites-enabled/default
/etc/nginx/nginx.conf
이 주석 을 지 워 버 리 세 요. 그렇지 않 으 면 방문 에 오류 가 발생 할 수 있 습 니 다. 이것 이 무슨 문제 인지 잠시 찾 지 못 했 습 니 다. 설정 을 수정 하면 다음 과 같 습 니 다.# /etc/nginx/sites-enabled/default
server_name *.qzcool.com; # managed by Certbot
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
proxy_pass http://172.17.0.1:8080;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Powered-By;
# try_files $uri $uri/ =404;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/dhbmw.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/dhbmw.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
listen 80 ;
server_name www.qzcool.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
nginx 설정 파일 새로 불 러 오기
nginx -s reload
인증서 정기 업데이트
Let 's Encrypt 의 증빙 사용 기한 은 3 개 월 밖 에 되 지 않 습 니 다. 증빙 이 만 료 되 기 한 달 전에 certbot - auto 를 사용 하여 증명 서 를 업데이트 할 수 있 습 니 다. 실제 업데이트 전에 우 리 는 -- dry - run 매개 변 수 를 추가 하여 선진 적 인 테스트 를 할 수 있 습 니 다.
/opt/letsencrypt/certbot-auto renew --dry-run
테스트 에 문제 가 없 으 면 정식 명령 으로 업데이트 할 수 있 습 니 다.
/opt/letsencrypt/certbot-auto renew --quiet --no-self-upgrade
편 의 를 위해 이 업데이트 명령 을 / opt / letsencrypt / renew. sh 명령 원고 에 쓸 수 있 습 니 다.
#!/bin/sh
/opt/letsencrypt/certbot-auto renew --quiet --no-self-upgrade --post-hook "service nginx reload"
여기 서 인증 서 를 업데이트 한 후에 nginx 서버 의 설정 을 자동 으로 다시 불 러 올 수 있 도록 post - hook 설정 을 추가 합 니 다.
이어서 이 / opt / letsencrypt / renew. sh 명령 원 고 를 crontab 에 쓰 고 입력
try_files $uri $uri/ =404;
하여 crontab 서비스 파일 을 편집 합 니 다.# m h dom mon dow command
30 2 * * 0 /opt/letsencrypt/renew.sh
공식 적 인 제안 은 이 명령 을 하루 에 두 번 실행 하여 서버 의 증빙 서 류 를 수시로 최신 상태 로 유지 할 수 있 도록 하 는 것 입 니 다. 여기 서 저 는 서버 가 매주 새벽 2 시 반 에 증빙 서 류 를 검사 하고 업데이트 하도록 설정 합 니 다. Certbot 은 증빙 이 만 료 되 기 한 달 전에 만 새로운 것 을 진행 할 수 있 고 증빙 이 만 료 되 지 않 으 면 업데이트 하지 않 습 니 다.
crontab 관련 명령:
이 사용자 의 crontab 서비스 가 성공 적 으로 만 들 어 졌 는 지 확인 하고
crontab -e
명령 으로 crontab 서 비 스 를 시작 합 니 다 crontab -l
. 서비스 가 실행 되 었 는 지 확인 합 니 다 sudo service crond start
413 Request Entity Too Large 오류 처리nginx 메 인 프로필 nginx. conf 를 엽 니 다. 보통 vim / etc / nginx / nginx. conf 이 위치 에서 http {} 단 을 찾 아 다음 내용 을 수정 합 니 다.
client_max_body_size 2m;
그 중 2m 는 당신 이 필요 로 하 는 허용 파일 크기 로 수정 되 었 습 니 다.
참고: 1. NGINX 사용 Let 's Encrypt 무료 SSL 증빙 설정 HTTPS 안전 암호 화 홈 페이지 교육
2. Certbot nginx 에서 SSL 설정
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.