특정 도메인에 https 로 접속하기 위해서는 서버에 ssl 인증서가 적용되어 있어야 한다. 이번에 ssl을 적용하는 서버는 앞단에 nginx 를 두어서 모든 요청이 nginx를 거치도록 하고있다. 이때문에 https를 사용하기 위해서는 nginx에 ssl 인증서를 적용해야 했다. 이를 위해서 다음과 같은 과정을 수행한다.
1. ssl 인증서 키 확인
ssl 인증서는 crt, cer, csr, pem 등등 다양한 형식을 가지고 있다. 이번에는 pem 형식의 ssl 인증서를 제공받아 이를 적용하게 되었다. ssl 인증서는 인증서 파일인 fullchain.pem 과 키 파일인 privkey.pem 으로 구성되어 있다. (파일 명칭은 달라질 수 있다.)
2. nginx configuration 파일 수정
ssl 인증서는 https를 사용하기 위함이다. https는 기본적으로 443 포트를 사용한다. 이때문에 nginx 설정파일에서 443 포트에 대한 서비스 설정을 수정해주어야 한다.
nginx의 설정은 nginx.conf 파일 또는 include로 적용된 site-available, site-enabled 디렉토리 아래의 파일들을 확인하여 수정하면 된다.
server {
listen 443 ssl;
server_name example.com;
# ssl 인증서 경로
ssl_certificate fullchain.pem;
# ssl 인증서 private key 경로
ssl_certificate_key privkey.pem;
...
}
ssl 인증서를 적용하기 위해서는 ssl_certificate 와 ssl_certificate_key 두가지 설정을 해주어야 한다. ssl_certificate 는 인증서 파일 (fullchain.pem), ssl_certificate_key 에는 키 파일 (privkey.pem) 이렇게 두개의 파일 경로를 지정해주면 된다.
※ ssl_password_file
간혹 ssl 파일에 패스워드를 설정하는 경우가 있다. 이때는 ssl 인증서 패스워드를 적은 파일의 경로를 ssl_password_file 로 지정해주어야 한다. 아래의 예제는 인증서 패스워드를 적은 ssl.pass 라는 파일을 지정해준 것이다.
server {
listen 443 ssl;
server_name example.com;
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
# ssl 인증서 패스워드 파일 경로
ssl_password_file ssl.pass;
...
}
[Reference]
- https://nginx.org/en/docs/http/ngx_http_ssl_module.html
Module ngx_http_ssl_module
Module ngx_http_ssl_module The ngx_http_ssl_module module provides the necessary support for HTTPS. This module is not built by default, it should be enabled with the --with-http_ssl_module configuration parameter. This module requires the OpenSSL library.
nginx.org
- https://velog.io/@coastby/Nginx-SSL-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0#nginx-%EC%84%A4%EC%A0%95
[Nginx] SSL 적용하기
SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)은 전송계층 상에서 클라이언트, 서버에 대한 인증 및 데이터 암호화를 수행한다. 클라이언트와 서버 양단 간 응용계층 및 TCP 전송계층 사이에서
velog.io
'기타' 카테고리의 다른 글
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 9. 웹 크롤러 설계 (0) | 2025.04.06 |
---|---|
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 8. URL 단축기 설계 (0) | 2025.03.18 |
[PostgreSQL] DB 백업 - pg_dump (0) | 2025.03.17 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 7. 분산 시스템을 위한 유일 ID 생성기 설계 (0) | 2025.03.13 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 6. 키-값 저장소 설계 (0) | 2025.02.25 |