사전지식
웹루트란?
쉽게 말해 웹서버가 사용할 수 있는 바탕화면이다.
웹서버가 가용할 수 있는 최상위 루트 디렉토리이다. 일반적으로 웹 브라우저에서 도메인에 접근했을 때 로드되는 컨텐츠가 웹루트에 위치해있다.
nginx의 경우
/var/www/html
이 루트 디렉토리이며 설정파일에서 변경 가능하다
루트 디렉토리 찾기
nginx의 config파일에서 root디렉토리의 위치를 확인할 수 있다.
$ cat /etc/nginx/sites-available/default
- 출력화면
Let's Encrypt 인증서 적용하기
인증서는 2가지 방법으로 받을 수 있습니다!
- standalone : 서버 자체에서 인증을 시도하는 방식
- webroot : 외부 웹에서 사이트에 접속해 문제가 없는지를 확인해 인증하는 방식
여기서는 webroot방식을 사용하여 인증서를 받아보겠습니다
1. let's encrypt 설치하기
$ `sudo apt-get -y install letsencrypt
2. let's encrypt 실행
$ sudo letsencrypt certonly --webroot --webroot-path=/var/www/html -d "test-domain.com" -m "test@gmail.com" --agree-tos
letsencrypt certonly
: 인증서 받기 위한 인증서 프로그램 실행--webroot
: webroot방식으로 인증을 하겠다--webroot-path=/var/www/html
: 웹루트 경로 알려줌-d "test-domain.com"
: 인증할 도메인 명시-m "test@gmail.com"
: 인증서 만료되었을경우 알림 받을 메일 주소 명시--agree-tos
: 약관 어쩌구는 다 동의하겠다
3. 인증서 발급 화면
fullchain.pem
키와 privkey.pem
키의 위치 기억해놓기!
4. nginx의 설정파일(/etc/nginx/sites-available/default
)을 다음과 같이 변경
server {
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
root /var/www/html;
server_name chat.live-md.com;
index index.html;
ssl on;
ssl_certificate /etc/letsencrypt/live/test-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test-domain.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
client_max_body_size 20m;
add_header Strict-Transport-Security "max-age=63072000" always;
ssl_stapling on;
ssl_stapling_verify on;
location / {
try_files $uri $uri/ =404;
}
}
return 301
: http응답 상태코드, 영구적인 url 리다이렉션을 위해 사용https://$host$request_uri
: 무조건 https://요청한주소
로 리다이렉션listen 443 ssl http2;
: https 기본 포트인 443으로 듣겠다root /var/www/html;
: 원하는 웹루트 경로 명시server_name test-domain.com;
: 도메인 이름
을 서버이름으로 쓰겠다index index.html;
: index.html
을 웹루트로 들어왔을 때 보여줄 웰컴페이지로 쓰겠다ssl_certificate
: 공개키 위치 설정, [3-1] fullchain.pem
키 위치로 설정ssl_certificate_key
: 개인키 위치 설정, [3-2] privkey.pem
키 위치로 설정ssl_session_timeout
: ssl 인증 기다리는 시간ssl_protocols
: 사용할 프로토콜ssl_ciphers
: 암호화할 때 사용할 알고리즘client_max_body_size
: 받을 수 있는 최대 바디 사이즈add_header Strict-Transport-Security "max-age=63072000" always;
: https통신만 수용하겠다는 헤더
5. 웹 루트의 인덱스 파일명 변경하기
/var/www/html/index.html
6. https://도메인
에서 암호화 되는지 확인하기
끝!!!
'👾개발지식 > DevOps' 카테고리의 다른 글
젠킨스와 도커를 이용한 CICD 배포방법 (0) | 2022.09.02 |
---|---|
EC2에서 HTTPS간 통신 구현하기 (0) | 2021.11.08 |
도커 기본 명령어 (0) | 2021.11.08 |
우분투 20.04 환경에서 도커(Docker) 설치 및 삭제 방법 (0) | 2021.09.09 |
도커를 사용해서 MYSQL설치하고 접속하기 (0) | 2021.07.28 |
댓글