certbot 컨테이너를 사용해 SSL 인증서 발급받기
백엔드의 비즈니스 로직을 마무리했다면 내 기준 가장 중요하다고 생각하는 배포 단계가 남아있다. 클라우드에 WAS 서버를 올리고, Nginx를 연결해 80번 포트로 통신하게 둔다면 편하게 웹사이트
hyeo-noo.tistory.com
위 포스팅을 따라서 인증서를 발급받고 난 후 Nginx.conf 파일을 어떻게 설정해 주면 되는지에 대한 글이다.
Nginx 파일
worker_processes auto;
events{
worker_connections 1024;
use epoll;
}
http {
upstream quant {
server quant_home:8000;
}
client_max_body_size 100M;
server{
listen 443 ssl;
server_name quant.or.kr www.quant.or.kr;
ssl_certificate /etc/letsencrypt/live/quant.or.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/quant.or.kr/privkey.pem;
ssl_prefer_server_ciphers on;
...
...
}
server {
listen 80;
server_name quant.or.kr www.quant.or.kr;
...
location / {
return 301 https://$host$request_uri;
}
# certbot이 ssl을 발급할때 아래의 주소/.well-known/acme-challenge/ 를 통해 인증하므로 반드시 필요
# location /.well-known/acme-challenge/ {
# root /var/www/certbot;
# }
}
server {
listen 80;
server_name 54.180.200.164;
return 301 https://quant.or.kr$request_uri;
}
server {
listen 443;
server_name 54.180.200.164;
return 301 https://quant.or.kr$request_uri;
}
}
위 코드는 ssl 부분만 있는 간략한 nginx.conf 이다.
listen 443 ssl;
server_name quant.or.kr www.quant.or.kr;
ssl_certificate /etc/letsencrypt/live/quant.or.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/quant.or.kr/privkey.pem;
ssl_prefer_server_ciphers on;
이 부분이 SSL인증서를 읽어들여 ssl을 사용할 수 있게 해주는 부분이다.
listen 443 ssl;
443 포트로 ssl을 사용하겠다는 의미이다.
server_name ...
자신의 도메인 또는 IP 주소를 넣어주면 된다.
ssl_certificate /etc/letsencrypt/live/quant.or.kr/fullchain.pem;
ssl_certificate의 위치를 설정해준다.
인증서가 있는 폴더에서 fullchain.pem 파일을 ssl_certificate로 지정해주었다.
ssl_certificate_key /etc/letsencrypt/live/quant.or.kr/privkey.pem;
ssl_certificate_key는 위와 비슷하게 인증서가 있는 폴더에서 privkey.pem 파일로 설정해준다.
ssl_prefer_server_ciphers on;
HTTP통신과 마찬가지로 SSL을 사용한 HTTPS도 클라이언트와 서버간의 핸드셰이킹 과정이 필수적이다.
이 과정에서 서버에 설정된 알고리즘을 우선하여 적용한다는 뜻이다.
만약 off가 된다면 보안 알고리즘이 약화되어 위험할 수 있으므로 on 설정을 유지한다.
Nginx 공식문서 참조
Configuring HTTPS servers
Configuring HTTPS servers To configure an HTTPS server, the ssl parameter must be enabled on listening sockets in the server block, and the locations of the server certificate and private key files should be specified: server { listen 443 ssl; server_name
nginx.org
'DevOps > Nginx' 카테고리의 다른 글
리버스 프록시의 정의와 설정 방법 (0) | 2022.03.07 |
---|---|
[Nginx] ip_hash method 주의사항 (backup X) (0) | 2021.11.20 |
[Nginx] 웹 서버 Nginx 에 대해서... (7) | 2021.10.24 |