무료 SSL 인증서 발급 사이트
조건부 무료는 제외하고 기간 연장시에도 제한 없이 무료발급이 가능한 사이트를 선정했습니다.
- SSL For Free : https://www.sslforfree.com
- ZeroSSL : https://zerossl.com
- Let’s Encrypt : https://letsencrypt.org
Let’s Encrypt 선정이유
- 회원가입이 필요 없음
- 보안을 위해서 보통 3개월마다 재발급을 받게 되는데 자동발급기능이 지원됨
- 비영리단체기관으로 Mozilla, Site Ground, Cisco, Facebook, Akamai등 유명한 회사들의 후원을 받고 있어 신뢰성이 있다.
- 개인적으로 서버를 직접 운영중인 입장에서 여러 계정을 관리하는데 있어 설치 및 설정이 가장 간편한 점. (개인에 따라 다를 수 있음)
이러한 이유를 근거로 저는 Let’s Encrypt를 선정하게 되었습니다. 참고로 ZeroSSL도 사용해 봤는데 어렵지 않게 성공했었어요.
준비사항
- 서버환경: 우분투(Ubuntu 22.04.2) + apache
- SSH 관리자 권한, 기본적인 파일 편집 지식
시작하기
snapd 설치
아파치를 최신상태로 업데이트하고 snapd를 설치
$ sudo apt update
$ sudo yum install snapd
$ sudo snap install core; sudo snap refresh core
certbot 설치
certbot이 설치되어 있었다면 삭제해 줍니다.
$ sudo apt-get remove certbot
snapd를 이용해서 certbot을 설치합니다.
$ sudo snap install --classic certbot
certbot 명령어를 어디에서나 실행할 수 있도록 심볼릭 링크를 만들어줍니다.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
인증서를 발급받고 아파치 웹서버에 설정이 자동으로 이뤄집니다.
$ sudo certbot --apache
이후 도메인의 추가/변경이 없이 인증서만 새로 발급받고 싶은 경우에는 certonly를 추가합니다.
$ sudo certbot certonly --apache
인증서를 적용할 도메인을 선택하는 메뉴가 나오는데 해당 도메인 번호를 선택해 주면 됩니다.
여러개를 선택할 때는 컴마(,)나 스페이스바로 구분지어 주면 됩니다.
방화벽 포트(443)를 열어줍니다.
$ sudo ufw allow https
웹서버를 재시작해 줍니다.
$ sudo service apache2 restart
이후 자동으로 설정되어 https 접속이 가능해집니다.
설정후 https접속이 잘 된다~
작업후기
저는 가상호스팅을 이용 중인데 인증서를 받는 부분에서 개별적으로 여러 번 받았습니다.
설정이 중복 설정되면서 접속 오류가 있었는데요.
잘못되었거나 문제가 된 경우에는 설정된 추가된 부분을 삭제하고 다시 발급을 받으면 설정이 다시 됩니다.
$ rm /etc/apache2/sites-enabled/virtual-host-le-ssl.conf
$ sudo certbot --apache
위 명령으로 수정되는 파일은 두 곳이 있습니다.
설정이 오류로 연결이 잘 안 될 때는 아래 예시를 참고하여 본인에 맞는 값을 찾아 수정해 주시면 될 것 같네요.
- 아파치 설정 파일(개인마다 다를 수 있음)
/etc/apache2/sites-enabled/virtual-host.conf<VirtualHost *.80>
ServerName ljj.kr
ServerAlias www.ljj.kr
DocumentRoot /home/ljj/public_html
RewriteEngine on RewriteCond %{SERVER_NAME} =ljj.kr
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
- 추가된 설정 파일
/etc/apache2/sites-enabled/virtual-host-le-ssl.conf<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName ljj.kr
ServerAlias www.ljj.kr
DocumentRoot /home/ljj/public_html
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/ljj.kr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ljj.kr/privkey.pem
</VirtualHost>
</IfModule>
아파치 설정 파일은 기본 도메인 별 기본 설정이 되어 있고 SSL접속에 대한 설정은 웹 설정 파일 뒤에 -le-ssl이라는 이름이 붙으면서 설정 파일에서 만들어집니다. 부디 성공하셔서 안전한 웹사이트 운영하세요~