http -> https 그리고 let’s encrypt

최근 웹에서 http 프로토콜 대신에 https를 많이 쓴다. 보안이 된다는 이유이며 무엇보다 검색포털에서 노출 우선순위를 높게 쳐준다. 특히 구글. 사실 보안적인 측면에서는 잘 모르겠다. 좋다니까 좋은갑다 하는 것이다. 어느 도둑놈이 우리집을 찍어 놓고 털려고 마음을 먹었는데 안털릴 재간이 없다. 특히 비싼 것들을 쟁여 놓고 있는 집이라면 고급기술을 갖고 있는 도둑들이 찍어 놨을 터이다. 그들을 무슨 수로 막을 수 있겠는가… 가난하던가 아니면 그들에게 표적이 되지 않기를 기도하는 수밖에 없다. 그렇지만 간단한 자물쇠 정도를 채워 놓으면 좀도둑들이 들락거리는 것은 막을 수 있을 것이다.

현재 홈페이지에 https를 사용하기 위해서 설정을 했다. 유료로 사용하는 것들이 대부분이지만 let’s encrypt를 사용하면 무료로 설정할 수 있다. 소규모이며 큰 자물쇠가 필요 없다면 사용하자 유료는 1년에 최소 오만원부터 몇 억씩 하는 ssl이 있는데 문제는 도메인 하나당 한 개씩 구입해야 된다는 것이다. 가령 내가 관리하는 홈페이지가 10개라면 5만원짜리 10개를 구입해도 일년에 50만원의 비용이 발생한다. 가난한 사람은 그만한 돈이 없을 뿐더러 설사 있다해도 다른 곳에 쓸 돈이 너무 많다.

현재 sarang.inmu.net 홈페이지를 돌리고 있는 서버의 간단한 사양은 centos7, php7.4, apache웹서버 정도이다. let’s encrypt를 설치하기 전에 몇 가지를 더 설치해야 된다. mod_ssl, certbot, python2-certbot-apache 이렇게 3가지를 먼저 설치하자. 아래에 명령어가 있다. 물론 epel이 설치 되어 있어야 아래의 명령어가 제대로 작동할 것이다.

yum install -y mod_ssl certbot python2-certbot-apache

이제 본격적으로 인증서를 설치한다. 아래에 명령어가 있다.

certbot --apache certonly -d sarang.inmu.net

위의 명령어를 입력하면 프롬프트가 잠시 동안 어떤 일을 하고 다시 원래 프롬프트가 뜬다. 그러면 인증서와 키파일 그리고 체인파일이 /etc/letsencrypt/live/sarang.inmu.net 폴더에 저장된다. 이제 아파치 설정파일에 서 위에 설치한 인증서와 몇 가지 파일을 사용해서 virtualhost 설정을 하면 끝이다. vi를 사용해서 ssl.conf 파일을 연다 아래에 명령어가 있다.

vi /etc/http/conf.d/ssl.conf

이제 쏼라쏼라 뭐가 잔뜩 있는데 모두 필요없는 것들이며 행여 중요한 것들은 나중에 ssl.conf 설정을 위한 문서를 보고 추가하면 된다. 아래에 설정한 문구만으로 충분하다.

<VirtualHost *:443>
    ServerName sarang.inmu.net:443
    DocumentRoot /home/sarang/product/sarang
    ServerAdmin sarang@inmu.net
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/sarang.inmu.net/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/sarang.inmu.net/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/sarang.inmu.net/fullchain.pem
    ErrorLog logs/sarang.inmu.net_ssl-error_log
    CustomLog logs/sarang.inmu.net_ssl-access_log common
</VirtualHost>

이제 설치와 설정이 완료되었다. 아파치를 리로드하고 접속해보자

systemctl reload httpd

그리고 브라우저를 사용해서 접속한다. https://sarang.inmu.net 접속이 되지만 뭔가 이상하다. 워드프레스 관리자에서 홈페이지 주소가 http://sarang.inmu.net 로 설정되어 있기 때문이다. 바꾸자!

이제 문제 없이 접속되고 이상한 것들도 사라졌다. 모질라 브라우저 주소줄을 보면 좌측에 녹색 열쇠표시 같은 것이 있다면 제대로 되었다는 것이다. 또 녹색 열쇠가 아니고 회색 열쇠 모양에 노란색 삼각형 경고가 있어도 제대로 된 것이다. html 문서에서 img 태그 같은 것들의 src가 http:// 로 만들어져 있을 때 나오는 표시이다. img, script, link 와 같이 외부에서 문서를 불러 올 때 사용하는 태그의 src가 http:// 로 불러 이런 모양이 나온다.

이제 간단한 자물쇠가 채워졌다. 달라진거는 없지만 기분은 좋다. 참고로 무료로 사용하는 인증서이므로 3개월에 한번씩 갱신을 해줘야 된다. 유료는 1년에 한번 갱신인데 조금 번거롭다. 귀찮으므로 서버가 자동으로 인증서를 갱신할 수 있도록 설정해보자 1개월에 한 번씩 갱신하는 설정을 크론에 등록하면 된다.

crontab -e

그러면 vi가 실행되면서 크론설정을 할 수 있다. 아래의 문구를 입력하면 한달에 한 번 자동으로 인증서를 갱신한다. 시간은 매월 23일 새벽 3시 정각에 인증서를 인증하겠다는 것이다.

0 03 23 * * /usr/bin/certbot renew

3달에 한번씩 갱신해야 되는 귀차니즘도 없이 그냥 쭈욱 사용하면 된다.

마지막으로 http에서 리다이렉트 설정을 하면 http://sarang.inmu.net 로 들어 오는 트래픽을 https://sarang.inmu.net로 보낸다. 이 서버를 기준으로 /etc/http/conf.d/virtual.conf 파일에 가상서버 설정하는 곳에 아래의 문구를 추가한다.

Redirect / https://sarang.inmu.net

이정도에서 마무리하자 더 필요한 내용은 다음에 추가하는 걸로
아참! 아파치를 새로 로드해야 적용 된다.

systemctl reload httpd

글쓴이: sarang

가영, 혁 그리고 한영이 아빠

댓글 남기기

%d 블로거가 이것을 좋아합니다: