앞서 포스팅에서는 nginx에 SSL을 적용했다면 이번에는 apache 웹서버에 적용해보도록 하겠다. 전체적인 틀은 비슷하지만 조금씩 다르니 천천히 따라하면된다.
설치하기에 앞서 먼저 도메인에 대한 가상 호스트를 생성해준다.
vi /etc/apache2/sites-available/dalso.iptime.org.conf
<VirtualHost *:80>
ServerAdmin dalso@dalso.iptime.org
DocumentRoot /var/www/html
ServerName dalso.iptime.org;
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
작성 후 apache2ctl configtest 로 체크.
service apache2 reload 로 갱신
이제 본격적으로 certbot을 설치해보자. 먼저 apt 의 repository에 certbot 을 업데이트 해줘야 되는데 다음 명령어이다.
add-apt-repository ppa:certbot/certbot
그다음 certbot의 apache 전용 패키지를 설치한다.
apt install python-certbot-apache
이제 설치된 certbot을 가지고 SSL인증서를 받아보도록 하자.
명령어를 입력하면 email 및 동의를 구하는데 하고싶은대로하면된다 Agree만누르자.
인증서의 유효기간은 90일이고 certbot renew 명령어로 갱신이 가능하다. (60일이후에)
자동갱신을 원한다면 crontab에 일정을 지정해주도록 하자.
SSL을 적용했으니 http로 오는사용자들에게 https로 리다이렉팅 할수있도록해야한다. 앞서 apache 설치하기를 정상적으로 수행했다면 Rewrite 모듈이 설치되어있기때문에 아래와 같이 적용하면 될것이다.
<VirtualHost *:80>
ServerName dalso.iptime.org
ServerAlias dalso.iptime.org
ServerAdmin dalso@dalso.iptime.org
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
ErrorLog ${APACHE_LOG_DIR}/example-error.log
CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName dalso.iptime.org
ServerAlias dalso.iptime.org
ServerAdmin dalso@dalso.iptime.org
DocumentRoot /var/www/html
ProxyRequests Off
SSLProxyEngine on
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Proxy *>
Order deny,allow
Allow from all
</proxy>
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
SSLCertificateFile /etc/letsencrypt/live/dalso.iptime.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/dalso.iptime.org/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/dalso.iptime.org/fullchain.pem
ErrorLog ${APACHE_LOG_DIR}/example-error.log
CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>
위의 코드에서 SSLCertificateFile만 수정하면 된다.
나는 iptime의 포트포워딩 기능을 이용해서 외부에서 dalso.iptime.org 의 443 포트로 접근하면 내부서버로 통신되게끔 해놓았다.
웹사이트에서 dalso.iptime.org를 접속해보면
정상적으로 인증서가 등록되었음을 확인할 수 있다.
수고했다