무료 SSL인증서 발급 받기(Let's Encrypt )
환경
ubuntu 16.04, Apache 2.4.18으로 구현했지만 다른 버전도 크게 상관없을것 같다.
1. 아파치 설치후 간단한 설정.
- 패키지 업데이트
sudo apt update
- 아파치 설치
sudo apt install apache2
- 아파치 설정 /etc/apache2/sites-available/자기설정파일명(예를 들어, 000-default.conf 같은) 을 열고 ServerName, ServerAdmin, DocumentRoot 를 수정합니다.
- ServerName: 도메인 주소 (예를 들어, example.com)
- ServerAdmin: 관리자 이메일
- DocumentRoot: 웹서버가 서비스할 소스가 있는 디렉토리 경로 (예를 들어, 워드프레스를 설치하고 있다면 htdocs의 경로)
그리고 사용할 파일이 /etc/apache2/sites-enabled 디렉토리에 심볼링 링크로 연결되어 있는지 확인합니다.
/etc/apache2/sites-enabled 디렉토리 안에 위에서 설정한 .conf 의 파일명과 같은 파일이 보이면 됩니다.
안 보인다면 sudo a2ensite 자기설정파일명을 하면 /etc/apache2/sites-enabled 디렉토리에 자동으로 심볼릭 링크됩니다.
2. Certbot을 설치
방법 1. 패키지 매니저에서 제공하는 Certbot 패키지 사용
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt update
$ sudo apt install certbot python-certbot-apache
방법 2. certbot-auto를 다운로드하여 사용
$ wget https://dl.eff.org/certbot-auto
$ chmod a+x ./certbot-auto
3. Certbot으로 인증서 발급
방법 1. 패키지 매니저에서 제공하는 Certbot 패키지를 사용
$ sudo certbot --apache certonly
방법 2. certbot-auto를 사용
certbot-autof르 다운받은 경로로 이동한 다음
$ sudo ./certbot-auto --apache certonly
[주의!] certonly를 꼭 붙여주세요.
그리고 아래 3가지 과정이 나옵니다.
- 이메일 입력
- 이용 약관 동의 (A:동의)
- Let’s Encrypt의 뉴스레터 수신 여부 (Y:동의 N:거부) - (선택사항) 거부해도 상관없으니 원하는 대로
여기까지 마치면 이(/etc/letsencrypt/live/자기가설정한도메인명) 경로에 인증서 파일 4개가 생성됩니다.
- cert.pem
- privkey.pem
- chain.pem
- fullchain.pem
4. https 서비스를 위한 가상 호스트를 설정.
/etc/apache2/sites-available 디렉토리에 가면 기본적으로 생성된 default-ssl.conf가 있을겁니다.
복사를 해서 써도 좋고 자신이 원하는 설정을 사용해도 좋습니다.
이 파일을 열고 아래 설정을 넣어줍니다.
- ServerAdmin: 관리자 이메일
- DocumentRoot: 웹서버가 서비스할 소스가 있는 디렉토리 경로 (예를 들어, 워드프레스를 설치하고 있다면 htdocs의 경로), 위에서 설정한 것과 같습니다.
그리고 이제 대망의 SSL 설정을 넣어줍니다. 여기에 발급받은 키 경로를 입력하면 끝입니다. 이미 입력되어 있는 상태이기 때문에 주석(# 표시)을 풀어주면 될거에요.
경로는 아래와 같습니다.
SSLEngine on SSLCertificateFile
/etc/letsencrypt/live/자기도메인주소/cert.pem
SSLCertificateKeyFile
/etc/letsencrypt/live/자기도메인주소/privkey.pem
SSLCertificateChainFile
/etc/letsencrypt/live/자기도메인주소/chain.pem
이제 ssl을 활성화하고 설정도 사용할거라고 표시해줍니다.
sudo a2enmod ssl
sudo a2ensite
여러분의SSL설정파일명(예를 들어, default-ssl.conf)
5. 방화벽 설정
호스팅 사이트 방화벽 확인
호스팅 사이트에서 방화벽이 열려있는지 확인합니다. 예를 들어, AWS lightsail의 경우 ‘네트워킹’ 탭에 가면 방화벽 설정이 있습니다. AWS lightsail은 기본적으로 http(80), ssh(22)만 열려있기 때문에 https(443)도 추가해줘야 합니다.
우분투 방화벽 확인
운영체제에도 방화벽이 있습니다.
기본적으로 꺼져있으나 우리는 방화벽을 켠 다음 원하는 포트만 열겠습니다.
# 방화벽 상태보기
$ sudo ufw status verbose
# 방화벽 열기
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw allow ssh
# 방화벽 활성화
$ sudo ufw enable
6. 아파치 재시작
$ sudo systemctl restart apache2
짠! 이제 https로 접속해보세요.
SSL 갱신
cd /letsencrypt
./certbot-auto renew --dry-run
./certbot-auto renew