-
반응형
Let’s encrypt 를 이용해서nginx 웹 서버에 HTTPS를 적용하는 방법입니다. 도메인을 등록하는 방식으로 진행되기 때문에 *도메인이 필수적으로 필요합니다. ubuntu 16.04, nginx version: nginx/1.10.3 (Ubuntu)에서 진행 하였습니다.
인증서 Let’s encrypt 역시 CA(Certificate Authority)입니다. certbot을 통해서 간편하고 무료로 등록 할수 있어서 많이 이용합니다. certbot-auto로 진행 하겠습니다. 먼저 공식문서에 나온대로 설치를 진행합니다.
공식문서: certbot.eff.org/docs/install.html#certbot-auto
wget https://dl.eff.org/certbot-auto sudo mv certbot-auto /usr/local/bin/certbot-auto sudo chown root /usr/local/bin/certbot-auto sudo chmod 0755 /usr/local/bin/certbot-auto
그 다음 디렉토리를 하나 생성합니다.
# 디렉토리 생성 $ sudo mkdir -p /var/www/letsencrypt # proxy.conf vim이나 vi으로 실행 $ sudo vim /etc/nginx/sites-available/default
default 파일을 수정합니다.
server { listen 80; server_name *자신의 도메인*; ... location ~ /\.well-known/acme-challenge/ { allow all; root /var/www/letsencrypt; } ... }
nginx 를 다시 실행시킨 후 인증서 발급을 시작합시다. default에 적어뒀던 도메인을 적어야 합니다.
$ service nginx restart $ certbot-auto certonly --webroot -w /var/www/letsencrypt -d 도메인 --agree-tos -m 본인의 이메일 ex) certbot-auto certonly --webroot -w /var/www/letsencrypt -d naver.com --agree-tos -m a@a.com
인증서 발급에 성공 했다면 /etc/letsencrypt/live/{도메인명}에 4가지 파일이 존재합니다.
$ sudo ls /etc/letsencrypt/live/{도메인명}
- cert.pem: 도메인 인증서
- chain.pem: Let’s Encrypt chain 인증서
- fullchain.pem: cert.pem + chain.pem
- privkey.pem: 인증서의 개인키
/etc/nginx/sites-available/default 파일을 다시 수정해야합니다. http로 접근하면 https로 리다이렉트해주고 발급받은 인증서를 적용해야합니다. 아래처럼 server를 추가해주세요.
server { listen 80; server_name *도메인*; location ~ /\.well-known/acme-challenge/ { allow all; root /var/www/letsencrypt; } location / { # http 로 들어올 경우 https 로 리다이렉트 한다. return 301 https://$server_name$request_uri; } } server { # http2 를 활성화 시키기 위해 http2 추가 listen 443 ssl http2; server_name *도메인*; root /html; index index.html index.htm; ssl_certificate /etc/letsencrypt/live/{도메인명}/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/{도메인명}/privkey.pem; location / { try_files $uri $uri/ 404; } }
다시 nginx를 재시작합니다
$ service nginx restart
이제 접속해서 확인해보세요!
적용 성공! 반응형'코딩' 카테고리의 다른 글
실행 컨텍스트 with 호이스팅, 스코프체인 - 1 (0) 2021.09.14 자바스크립트 기본 데이터 타입 (0) 2021.09.12 ssh를 이용하여 로컬에서 원격서버로 파일 전송하기 (0) 2020.11.17 React-native로 만든 앱에 광고 넣기(Android) with react-native-admob (0) 2020.11.15 REACT-NATIVE 버튼 둥글게 만들기 (0) 2020.11.11