대세에 맞게 https로 변경(nginx, https)

별로 이슈는 없지만, wireshark로 내용이 다 보이는 http 대신 https로 변경을 하였다.
아래 자물쇠마크가 왠지 신뢰감을 준다고나 할까

변경 방법은 https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04 를 참조하였다.

nginx기반에서 https로 웹서비스를 변경하는 법을 한글로 정리하자면

1) certbot repository 추가 후 nginxcertbot 설치

2) nginx의 default 파일에서 서버 이름 명시적으로 지정(example.com과 www.example.com을 사용한다고 하는 경우)

3) nginx를 reload함

4) 방화벽이 있나 확인. 방화벽이 있는 경우 방화벽 조건을 Nginx Full로 변경
또한, IP 공유기 뒤에 구성된 경우 공유기의 포트 포워딩에 443 port를 추가해줘야 함.
(이게 안되면 5번 절차에서 실패가 발생)

5) certbot에 –nginx 및 -d 에 web 서비스할 host 이름을 입력한다.

그러면, 일단 정보를 수신할 이메일을 물어본다.

다음, 약관(?) 동의를 해야한다.

마지막으로, 재단에 해당 이메일 어드레스를 공개할 건지 여부를 물어본다.
나는 또다른 spam 을 양성하게 될까바 N을 선택했다.

443 포트가 열리지 않으면 다음처럼 에러가 발생한다.

설치가 완료되면 마지막으로 http로 접속 시 https로 redirection할 것인지 여부를 물어본다.
일부러 http와 https를 따로 구동시킬 필요가 없다면 2를 선택해서, http로 접속해도 https로 redirect되도록 한다.

5) 여기까지만 해도 홈페이지에 접속해보면 https 로 접속이 된다. 하지만, 사용된 보안알고리즘이 취약하다고 하니 다음을 수행한다.
해당 명령 수행 시 시간이 조금 걸린다.

명령 수행이 끝나면 다시 default 파일을 edit한다. server 카테고리 안에 ssl_dhparam 을 추가한다.

server {
. . .
ssl_dhparam /etc/ssl/certs/dhparam.pem;

그리고 다시 nginx를 reload한다.

6) 이 encryption은 90일동안 유효하다고 한다. 그래서, cron을 이용해서 매일 갱신하도록 추가한다.

그러면 crontab을 수정할 editor를 물어보는데, 편한 것으로 선택하면 된다.

crontab의 제일 아래에 다음같이 입력하면 매일 3시 15분에 인증서를 갱신하게 된다.

답글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.