쉽게 말해 웹서버가 사용할 수 있는 바탕화면이다.
웹서버가 가용할 수 있는 최상위 루트 디렉토리이다. 일반적으로 웹 브라우저에서 도메인에 접근했을 때 로드되는 컨텐츠가 웹루트에 위치해있다.
nginx의 경우
/var/www/html
이 루트 디렉토리이며 설정파일에서 변경 가능하다
nginx의 config파일에서 root디렉토리의 위치를 확인할 수 있다.
$ cat /etc/nginx/sites-available/default
출력화면
인증서는 2가지 방법으로 받을 수 있습니다!
여기서는 webroot방식을 사용하여 인증서를 받아보겠습니다
$ `sudo apt-get -y install letsencrypt
$ 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
: 약관 어쩌구는 다 동의하겠다
fullchain.pem
키와 privkey.pem
키의 위치 기억해놓기!
/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통신만 수용하겠다는 헤더
/var/www/html/index.html
https://도메인
에서 암호화 되는지 확인하기