2020. 10. 22. 19:59ㆍNginx
환경 Ubuntu 16.04 (LTS) 이상의 환경에서 구성함
도메인 test.com 이 있다고 가정
1. 저장소 설정과 업데이트를 진행
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
2. Certbot설치
$ sudo apt-get install certbot python3-certbot-nginx
3. nginx 세팅
Certbot이 알아서 SSL를 세팅해주기 때문에
vi /etc/nginx/sites-available/ (사용 할 server block 이름) 작성
server {
listen 80;
server_name test.com (도메인 이름);
location /{
proxy_pass http://localhost:3000;
}
}
작성을 한다.
설정이 완료 되면 저장하고 나와서 service nginx reload 으로 재시작
4. SSL인증 가져오기
$ sudo certbot --nginx -d test.com -d www.test.com // 이런 식 으로 여러 도메인을 입력 할 수 있다.
여기선 하나만 설정하기로 한다.
$ sudo certbot --nginx -d test.com
입력 후 이런 창이 뜨는데 인증서가 만료되기전 알림을 이메일로 받을 이메일을 작성하면된다.
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):
다음에 나오는것도 A를 입력하고 넘어간다
다음은
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
나오는데 개인 취향으로 하면 될 꺼같다.
다음으로 넘어가면 키가 생성이 완료가 된다.
1번, 2번 선택하는 창이 나오는데 2번을 선택하면 http로 접속이오면 자동으로 https로 접속 할 수 있도록 작성해준다
4. 인증서 자동갱신 설정확인
letsencrypt에선 90일만 유효하기 때문에 갱신을 해주어야 한다 매번 일일이 하지않게 certbot를 이용해 자동갱신한다
설정이 되어있는지 확인하려면
$ sudo certbot renew --dry-run
입력
에러가 뜨지않는다면 정상적으로 작동중이다.
5. openssl를 이용해 dhparam.pem키를 생성한다
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
입력 후
ssl_dhparam "/etc/ssl/certs/dhparam.pem"; 를
/etc/nginx/sites-available에 본인이 생성한 server block 에 넣어주면된다
server {
listen 443;
ssl on;
server_name test.com;
ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem; # managed by Certbot
ssl_dhparam "/etc/ssl/certs/dhparam.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:MEDIUM:!SSLv2:!PSK:!SRP:!ADH:!AECDH;
ssl_prefer_server_ciphers on;
location /{
proxy_pass http://localhost:3000;
}
}
/etc/nginx/sites-available에 본인이 생성한 server block에 키경로가 얼래 자동으로 설정이 되는데 때때로 안될때가 있으니
들어가서 확인을 해야한다.
server {
listen 443;
ssl on;
server_name test.com;
ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem; # managed by Certbot
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:MEDIUM:!SSLv2:!PSK:!SRP:!ADH:!AECDH;
ssl_prefer_server_ciphers on;
location /{
proxy_pass http://localhost:3000;
}
}
ssl_certificate, ssl_certificate_key
두개가 설정이 안되있을때가 있다 확인해서 넣어주어야 한다.
ssl on;
ssl를 사용한다고 입력을 해줘야 한다.
그럼 이제 보안연결이 된다.
참고:
'Nginx' 카테고리의 다른 글
Nginx 설치, 사용하기 (0) | 2020.11.17 |
---|---|
Letsencrypt SSL 인증서 삭제 (0) | 2020.11.11 |
Vue 빌드 파일 Nginx에 연결하기 npm vue build (0) | 2020.10.29 |
NGINX에서 TLSv1.0 / TLSv1.1 제거 하고 TLSv1.3추가하는 방법 (0) | 2020.10.23 |
Nginx 해외서버 차단방법 (0) | 2020.09.10 |