페이스북, 카카오 같이 소셜 서비스를 운영하는 업체들은 API를 제공하고 있다. 이 API를 사용하고자 하는 사이트가 HTTPS가 적용이 되어 있어야 기능을 제공한다.
Let's Encrypt는 무료로 SSL 인증서를 발급하여 HTTPS를 사용할 수 있게 해주는 고마운 인증 기관이다. 적용을 하는 것도 매우 간단하다.
여러 방법이 있지만 이 글에서는 인증서를 발급하는 certbot 패키지를 활용하여 간편하게 등록하는 방법으로 진행하였다.
참고로 ubuntu 20.04, Apache 환경을 기준으로 한다.
[사전 준비]
https를 적용하기 위해서는 등록된 도메인이 필요하다. 사용하고 있는 도메인이 있으면 본문으로 넘어가면 되고, 없으면 도메인을 등록해야 한다. 도메인도 마찬가지로 유료와 무료 등록이 있다.
테스트용 무료 도메인으로 진행하려면 https://teserre.tistory.com/3 에 방법을 적어 두었다. 유료는 업체가 많으니 적당한 곳을 찾아 등록을 하면 된다.
만약 서버가 공유기에 연결이 되어 있고 DDNS기능을 지원한다면 무료로 도메인을 등록할 수 있다. 이 글에서는 iptime 공유기를 기준으로 진행하였다.
공유기 설정 페이지에 접속하여 고급설정-> 특수기능-> DDNS 설정 메뉴를 선택한다. 그럼 우측에 DDNS 설정 화면이 출력된다. 여기서 ④호스트 이름에는 사이트의 이름을, ⑤사용자 ID에는 이메일 주소를 입력한다.
예) 호스트이름 : tistory, 사용자 ID : example@gmail.com
입력한 후 아래의 DDNS 등록을 누르면 iptime 서버로 정보를 보내 등록을 시작한다. 별다른 문제가 없으면 정상 등록이라고 출력된다. 만약 다른 사람이 이미 호스트 이름을 사용하고 있으면 '다른 사용자와 겹침'이라는 상태를 출력하며 등록이 되지 않는다. 그럴 경우 '삭제' 버튼을 눌러 등록을 종료하고 호스트 이름을 바꾸어서 다시 등록을 시도하면 된다.
※ iptime.org 주소로 SSL 등록을 시도할 때 바로 성공하는 경우도 있지만, CAA 에러를 출력하는 경우가 있다. 이럴 경우에는 iptime.org로 등록을 할 수 없다.
필자도 처음에 성공을 하였다가 이 글을 작성하기 위해 삭제 후 다시 시도하니 계속 등록이 되지 않았다. 만약 실패할 경우 다른 도메인을 사용하여 시도를 하는 수밖에 없다.
1. ubuntu에 certbot, certbot apache 플러그인 설치
sudo apt install certbot python3-certbot-apache
2. --apache 옵션을 넣어서 certbot 실행
sudo certbot --apache
certbot을 설치하고 맨 처음 실행하게 되면 갱신이나 보안 관련 알림을 위해 이메일을 입력하라고 한다. 별 다른 내용은 오지 않지만 혹시 모르니 사용하는 이메일을 입력하고 엔터를 누른다.
약관 동의와 관련 정보 수신 동의를 묻는데 약관에는 동의를 해야 넘어가고 아래의 이메일 수신은 굳이 하지 않아도 된다.
그리고 경고처럼 빨간 글씨로 뭔가 뜨는데 서버 네임을 따로 지정하지 않았을 경우 뜨는 문구다. 인증서를 적용할 서버의 도메인을 입력하면 된다.
이 글의 예시처럼 iptime 공유기의 DDNS를 사용하였다면 example.iptime.org를 입력하면 된다.
만약 apache에서 ServerName을 따로 지정하였다면 호스트를 선택하는 화면이 출력된다. 선택화는 화면이 뜨면 해당하는 번호를 입력하고 넘어가면 된다.
자동으로 apache의 설정 파일을 수정하면서 진행이 된다. 그러다 선택창이 뜨는데, 이는 웹서버에 대한 모든 접근을 할 때 HTTPS로 강제로 리디렉션 할 것인지 묻는 것이다.
http와 https를 따로 사용해야 할 필요가 있으면 1을 선택하고 https만 사용하면 된다면 2를 선택하면 된다.
굳이 http를 쓸 이유는 없으니 여기서는 2번을 선택하였다.
정상적으로 등록이 되면 사진과 같은 화면이 출력된다. 자동으로 설정이 되어 있겠지만 마지막 확인으로 apache의 ssl과 https 사이트를 활성화 한 후 apache를 재시작하면 적용이 완료된다.
sudo a2enmod ssl
sudo a2ensite 000-default-le-ssl.conf
sudo service apache2 restart
a2enmod로 ssl 모듈을 활성화하고 a2ensite로 ssl이 적용된 사이트를 활성화 한다.
브라우저로 도메인을 입력하여 웹서버에 접속을 하면 SSL이 적용되고 자동으로 https로 리디렉션되는 것을 확인할 수 있다.
만약 적용이 되지 않는다면 브라우저의 캐시 때문에 적용 되기 전의 정보를 불러왔기 때문이다. 브라우저의 쿠키를 지우거나 브라우저의 사생활 보호 모드로 접속을 하면 적용이 되는 것을 확인할 수 있다.
이제 https를 사용해야하는 API들도 사용할 수 있다.