우분투에서 아파치2 ssl 설정
Ubuntu에서 HTTPS를 설정하는 방법은 크게 두 가지로 나뉩니다. 하나는 Apache HTTP 서버를 사용하는 방법이고, 다른 하나는 Nginx 서버를 사용하는 방법입니다. 이번에는 Apache HTTP 서버를 사용하는 경우를 가정하고, HTTPS 설정 방법에 대해 안내해 드리겠습니다.
SSL 모듈 활성화
sudo a2enmod ssl
SSL 인증서 설치 SSL 인증서는 인증 기관(CA)으로부터 발급받아야 합니다. 인증서 발급은 유료로 제공되는 인증서와, 무료로 발급받을 수 있는 Let's Encrypt 인증서 등 다양한 방법이 있습니다. 여기서는 Let's Encrypt 인증서 발급 방법을 안내하겠습니다.
Certbot 설치
sqlsudo apt-get update
sudo apt-get install certbot python3-certbot-apache
인증서 발급
csssudo certbot --apache -d example.com -d www.example.com
위 명령어에서 example.com
은 도메인 이름에 맞게 수정해야 합니다. 이후 인증서 발급 과정에서 이메일 주소 입력과 도메인 소유자 확인 과정을 거쳐야 합니다.
HTTPS로 접속하는 사용자를 위한 Apache 가상 호스트 설정 HTTPS로 접속하는 사용자를 위한 가상 호스트를 설정해야 합니다. 설정 방법은 다음과 같습니다.
/etc/apache2/sites-available
디렉터리에 새로운 가상 호스트 설정 파일을 생성합니다.
bashsudo nano /etc/apache2/sites-available/example.com.conf
다음과 같이 설정 파일을 작성합니다.
bash<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
여기서 example.com
은 도메인 이름에 맞게 수정해야 합니다.
가상 호스트 설정 파일을 활성화합니다.
sudo a2ensite example.com.conf
Apache 서버를 재시작합니다.
sudo service apache2 restart
이제 HTTPS로 접속할 수 있습니다. 단, 보안을 위해서는 SSL 인증서 갱신과 HTTPS 전용으로 서비스하는 것이 권장됩니다.
]# apt-get update ]# apt-get install certbot python3-certbot-apache ]# certbot --apache -d example.com -d www.example.com 실행후 Challenge failed for domain www.xxxx.com http://www.a3040.com/.well-known/acme-challenge/2m4aHw_W5QHOytip2DwvqnQhMSQuvZs3CCIwRIUJsPU: 404 이니까 수정하라고 나옴 ]# mkdir -p /home/xxxx/public_html/.well-known/acme-challenge ]# touch /home/xxxx/public_html/.well-known/acme-challenge/2m4aHw_W5QHOytip2DwvqnQhMSQuvZs3CCIwRIUJsPU 재실행 ]# certbot --apache -d a3040.com -d www.a3040.com Enabling available site: /etc/apache2/sites-available/a3040.com-le-ssl.conf We were unable to find a vhost with a ServerName or Address of www.a3040.com. Which virtual host would you like to choose? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: 000-default.conf | | | Enabled 2: a3040.com.conf | a3040.com | | Enabled 3: a3040.com-le-ssl.conf | a3040.com | HTTPS | Enabled 설정 해준다고 나와서 3번 선택후 ]# a2ensite a3040.com-le-ssl.conf ]# service apache2 stop ]# service apache2 start https://a3040.com 으로 잘 접속됨... 그러나 Mixed Content: The page 에러가 몽땅 발생해 버렸다.