Ubuntu, Apache2 https(ssl) 적용하기

현재 운영중인 서버에 ssl 적용을 위해 여러가지를 알아보았다.

유료로 구입 후 적용하면 되겠지만 구입하지 않고 무료인 방법을 찾아서 적용하였고 해당 방법을 작성해 놓으려고 한다.

내가 사용한 것은 letsencrypt다.


OS : 18.04.2

Server : Apache

Port : 443 (기본포트)


1. git에서 프로젝트를 다운로드 한다. (우분투 경로 어디에서든 관계없음. 나의경우는 홈디렉토리에서 진행)

git clone https://github.com/letsencrypt/letsencrypt

2. let’s encrypt 프로젝트로 이동

cd letsencrypt

3. let’s encrypt를 실행하여 key 발급

 – 이메일주소 : 기간이 만료될 때 메일로 알림이 온다.

 – 사용할 도메인주소 : 구입한 도메인, 예를들어 : kkensu.com

sudo ./letsencrypt-auto certonly --manual --email [이메일 주소] -d [사용할 도메인주소]

 – 필요한 피키지들은 자동으로 받으면서 진행됩니다. 그러면서 아래와 같이 물어보는곳이 나오는데 Agree / Yes / Yes 로 진행하면 Press Enter to Continue 라고 나옵니다. 이 때 엔터를 누르지 말고 잠시 대기해주세요.

4. 위의 그림과 같은 상태라면 터미널을 하나 더 연후에 아래의 내용을 기입

자신의 서버 root path로 이동 (예 : /var/www/html)

mkdir .well-known

cd .well-known

mkdir acme-challenge

cd acme-challenge

vi xBPfeQRolGtPOGZAPnWZSbHKGstVVMYMEjRwatrR16A

"xBPfeQRolGtPOGZAPnWZSbHKGstVVMYMEjRwatrR16A.ohbJQbVZH5eifXOo1Jw7wXBiTmGjQFnJP4DeyGRI8_k" 입력

큰따옴표는 빼놓고 입력을 했으면 저장 후 종료

5. 4번을 마쳤으면 원래의 터미널로 돌아와서 Enter를 눌러 다음으로 진행

6. 완료

 – Congratulations! 라고 나오면서 마무리가 된다.

Press Enter to Continue
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/kkensu.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/kkensu.com/privkey.pem
   Your cert will expire on 2019-05-23. To obtain a new or tweaked
   version of this certificate in the future, simply run
   letsencrypt-auto again. To non-interactively renew *all* of your
   certificates, run "letsencrypt-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

7. /etc/letsencrypt/live/[도메인]/ 디렉토리 안에 pem키 4가지가 존재한다.

8. 아파치에 ssl 키 등록하기

 – cd /etc/apache2/sites-available (디렉토리로 이동)

 – sudo cp default-ssl.conf kkensu.com-ssl.conf  (복사하기)

 – sudo vi kkensu.com-ssl.conf

 – 아래 내용 입력하여 파일 수정하기

<IfModule mod_ssl.c>
    <VirtualHost *:443> <!-- https 연결이 되지 않는다면 * 부분에 아이피를 넣어준다. x.x.x.x:443 -->
        ServerAdmin kkensu@gmail.com
        ServerName kkensu.com
        ServerAlias kkensu.com

        DocumentRoot /var/www/html
        
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        
        SSLEngine on
        
        SSLCertificateFile  /etc/letsencrypt/live/kkensu.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/kkensu.com/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/kkensu.com/chain.pem
        
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
        
        </VirtualHost>
</IfModule>

9. kkensu.com 도메인 enable 설정하기

sudo a2enmod ssl <!-- ssl을 사용하겠다고 명시해주는 것 -->

sudo a2ensite kkensu.com-ssl.conf

10. 아파치 재기동

sudo service apache2 restart

11. http로 접속하면 https로 이동하도록 Redirect 걸기

<VirtualHost *:80>
     ServerName kkensu.com
     DocumentRoot /var/www/test
     Redirect permanent / https://kkensu.com/
     <Directory /var/www/html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
     </Directory>
 </VirtualHost>

12. 끝!