Nginx 설정 https (Let 's Encrypt)

4600 단어
초심
IOS 가 http 요청 을 극력 차단 하고 있 기 때문에 시간 을 내 서 방금 배 치 된 웹 서비스 에 https 지원 을 추가 합 니 다.
90 일 무료 및 무한 재계약 가능 한 Let 's Encrypt 사용
Let 's Encrypt 는 양심 적 인 CA 입 니 다. 일반 상업 CA 의 가격 은 개인 적 으로 받 아들 이기 어렵 기 때 문 입 니 다.하지만 90 일간 무료 증 서 를 제공 했다.
인증 서 를 가 져 오 는 방식 도 간단 합 니 다. 완전 자동화 솔 루 션 을 제공 하기 때 문 입 니 다.
##     
mkdir /var/www/letsencrypt
sudo apt-get install certbot
sudo certbot certonly --webroot --agree-tos --no-eff-email --email [email protected] -w /var/www/letsencrypt -d app.airoubo.com

OK 신 청 했 어.
Nginx 설정
challenge 디 렉 터 리 만 들 기:
sudo mkdir -p /var/www/letsencrypt/.well-known/acme-challenge

letsencrypt. conf 파일 을 만 들 고 추가: / etc / nginx / snippets / letsencrypt. conf
location ^~ /.well-known/acme-challenge/ {
        default_type "text/plain";
        root /var/www/letsencrypt;
}

ssl. conf 파일 을 만 들 고 추가: / etc / nginx / snippets / ssl. conf
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

주 프로필 수정:
# the upstream component nginx needs to connect to
upstream django {
    server unix:///data/django/rouboApi/rouboapi.scok; # for a file socket
    #server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}

# configuration of the server
server {
    # the port your site will be served on
    listen      80;
    # the domain name it will serve for
    server_name app.airoubo.com; # substitute your machine's IP address or FQDN
    include /etc/nginx/snippets/letsencrypt.conf;
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    # Django media
    #location /media  {
    #    alias /path/to/your/mysite/media;  # your Django project's media files - amend as required
    #}

    location /static {
        alias /data/django/rouboApi/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location /roubo {
        uwsgi_pass  django;
        include     /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
    }
}

## https

server {
    # the port your site will be served on
    listen      443 ssl http2;
    listen [::]:443 ssl http2;
    # the domain name it will serve for
    server_name app.airoubo.com; # substitute your machine's IP address or FQDN
    include /etc/nginx/snippets/letsencrypt.conf;
    charset     utf-8;

    ssl_certificate /etc/letsencrypt/live/app.airoubo.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/app.airoubo.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/app.airoubo.com/fullchain.pem;
    include /etc/nginx/snippets/ssl.conf;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    # Django media
    #location /media  {
    #    alias /path/to/your/mysite/media;  # your Django project's media files - amend as required
    #}

    location /static {
        alias /data/django/rouboApi/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location /roubo {
        uwsgi_pass  django;
        include     /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
    }
}

nginx 를 다시 시작 하면 https 접근 서 비 스 를 사용 할 수 있 습 니 다.
자동 연장
기한 은 90 일이 지만 무한 재계약 을 지원 한다.그 러 니까 우 리 는 정 해진 시간 에 재계약 만 하면 돼.
위의 certbot 도 구 를 사용 하면 man certbot 를 볼 수 있 습 니 다. 아래 에 renew 매개 변 수 는 인증 서 를 업데이트 하 는 데 사 용 됩 니 다.인증서 가 업 데 이 트 된 후에 nginx 서 비 스 를 다시 시작 해 야 하기 때 문 입 니 다. 마침 renew - hook 의 인자 가 있 습 니 다. renew 가 성공 한 후에 hook 에서 제 가 지정 한 스 크 립 트 를 실행 할 수 있 도록 지원 합 니 다.
/ etc / letsencrypt / renehook. sh 스 크 립 트 에 nginx 를 다시 시작 하 는 동작 을 추가 합 니 다:
#!/bin/bash
service nginx restart

루트 아래 crontab 증가:
sudo crontab -e

매월 1 일 8 시 에 업 데 이 트 를 실행 하도록 설정 합 니 다.
00 8 1 * * certbot renew --noninteractive --renew-hook /etc/letsencrypt/renewhook.sh

삐걱삐걱
CA 인증서 배포, 관리 등의 원리 에 대해 시간 이 있 으 면 알 아 봐 야 합 니 다. 평소에 많이 쓰 지 는 않 지만.Documentation - Let’s Encrypt - Free SSL/TLS Certificates

좋은 웹페이지 즐겨찾기