redgoose(붉은거위)

letsencrypt 도메인 추가

Nest
Development
Category
Server
Hit
860
Star
0

현재 돌아가고 있는 서비스에서 서브 도메인을 추가할 일이 생겼다.

대략적으로 과정은 nginx서버를 끄고, http가 돌아가는 환경으로 변경하고, 도메인 추가 명령어를 실행하고 nginx ssl 세팅으로 변경하고 nginx를 재시작하는게 과정이다.

stop nginx

먼저 nginx를 끈다.

sudo systemctl stop nginx

http 환경으로 변경

nginx.conf 파일쪽에서 다음과 같은 형태로 변경해둔다.

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

http {

    # Basic Settings
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;
    index    index.htm index.html index.php;

    include         /etc/nginx/mime.types;
    default_type    application/octet-stream;

    # Servers
    server {
        listen 80;
        server_name _;
        
        location ~ {
            root /home/redgoose/www;
        }

        location ~ /.well-known {
            allow all;
        }
    }

}

다시 nginx를 시작한다.

sudo systemctl restart nginx

웹브라우저에서 접속해서 페이지가 출력되도록 조정해준다.

인증서 생성

현재까지 사용한 도메인 추가 명령어는 다음과 같다.

sudo certbot certonly --webroot -w /home/redgoose/www -d redgoose.me -d www.redgoose.me -d goose.redgoose.me -d note.redgoose.me -d display.redgoose.me -d lab.redgoose.me -d projects.redgoose.me -d src.redgoose.me -d qtum.redgoose.me

추가할 도메인을 -d와 함께 덧붙여준다.

nginx에서 ssl 설정

ssl 추가가 무사히 완료되었으면 nginx에서 ssl 설정을 한다.

ssl on;

ssl_certificate /etc/letsencrypt/live/redgoose.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/redgoose.me/privkey.pem;


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; # Requires nginx >= 1.1.0
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
ssl_stapling on; # Requires nginx >= 1.3.7
ssl_stapling_verify on; # Requires nginx => 1.3.7
#resolver $DNS-IP-1 $DNS-IP-2 valid=300s;
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 /home/redgoose/www/.ssl/dhparams.pem;

자세한건 아래쪽 블로그에서...

설정 오류가 있는지 테스트는 sudo nginx -t 명령으로 검사할 수 있다.

nginx 재시작

sudo systemctl restart nginx

서버 재시작하고 브라우저에서 확인한다. 약간 시간이 지나고 좌물쇠가 나올 수 있다.

참고: http://blog.naver.com/PostView.nhn?blogId=itperson&logNo=220853849351