Pink Spider/내 우분투 서버에 SSL 무료 설치하기

Created Sat, 01 Mar 2025 15:19:58 +0900 Modified Mon, 08 Dec 2025 08:41:47 +0900
1199 Words 5 min

GoDoc

내 우분투 서버에 SSL 무료 설치하기

  • SSL 발급 사이트 : https://zerossl.com/ 다른 무료 사이트도 많이 있습니다만 여기서 다 나열할 필요는 없을 듯 합니다..
  • 내가 쓰는 도메인 서비스 업체 : whois

SSL 설치 절차

  • 무료 SSL의 제약사항은 별도로 알아보기로 하고
  • 기본 개념은 먼저 인증기관으로 부터 해당 도메인의 소유주가 맞는지 확인을 받고 인증기관으로부터 SSL인증서와 key를 받아서 서버에 설치했음을 검증받으면 SSL발급을 완료했다고 할 수 있습니다..
  • 이를 DV(Domain Validation) 이라고 하는데, 소규모 사이트나 개발서버에서 간략하게 무료로 발급받아 사용시에 사용합니다.

도메인 소유주임을 확인 받기

  1. ZeroSSL에 회원가입 image
  2. SSL Certificate Setup 에서 각 항목 채워줍니다.
  • Domains
  • Validity : 90-Day Certificate 로 해야 무료
  • Add-Ons : 아무것도 선택하지 않아야 무료 가능
  • CSR & Contact : Auto-Generate CSR 활성화
  • Finalize Your Order: Free 선택

image

  • Domain 소유주가 맞는지 확인하는 절차가 있는데 캡쳐를 못했습니다.. whois의 경우엔 [네임서버 고급설정] 가서 [CNAME 레코드 관리]에서 zeroSsl에서 제공한 호스트명과 CNAME 레코드를 등록해주면 도메인 인증을 할 수 있습니다.

인증서 받아서 서버에 설치했음을 확인 받기

Install Certificate

image

  1. Download Certificate 에서 내 경우엔 Server Type을 Ubuntu로 하였습니다.. 이렇게 해도 결국엔 apache2를 가동하고 실제 인증서가 서버에 설치가 되었는지 인증기관인 zerossl에 확인이 되어야 합니다.

  2. Install Certificate

    • Zip 파일을 받아서 압축 풀고 tutorial 참고,
      • Follow the steps listed on this page. (on this page에 링크 걸려있음)
    • zip 파일에는 다음 3개의 파일이 들어있습니다.
      • certificate.crt
      • ca_bundle.crt
      • private.key
    • 3개 파일을 우분투로 복사 (FTP든 scp든 사용)
    • 이제 apache를 띄워서 확인을 받아야 되는데 내 서버에 /etc/apache2/sites-enabled/your_site_name 이 경로가 없었고 a2ensite 명령어도 없었습니다.
    • apache2가 제대로 설치가 안되어 있었기 때문입니다. apache2가 설치가 되어 있는지 확인하려면 아래 명령어를 쳐보면 됩니다.
    apache2 -v
    
    • 필요하니 설치. 꼭 아파치로 도메인 소유 인증을 할 필요는 없지만, 어떤 서버로든 인증은 해야 합니다.
    sudo apt update
    sudo apt install apache2 -y
    
    • /etc/apache2/sites-enabled 폴더에는 000-default.conf 파일이 있었는데 아래와 같이 생겼습니다.
    <VirtualHost *:80>
        ServerAdmin admin@example.com
        ServerName example.com
        ServerAlias www.example.com
    
        DocumentRoot /var/www/example.com/public_html
    
        <Directory /var/www/example.com/public_html>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
  • 튜토리얼대로 Apache에서 SSLEngine on을 사용하려 하면 “Invalid command ‘SSLEngine’” 오류가 발생할 수 있는데 그 이유는 apache에 SSL 모듈이 활성화되지 않았기 때문입니다.
  1. SSL 모듈이 활성화되어 있는지 확인 먼저, Apache에서 SSL 모듈(mod_ssl)이 활성화되어 있는지 확인

    apache2ctl -M | grep ssl
    
  2. SSL 모듈이 비활성화되어 있다면 아래 명령어를 실행하여 활성화 해야 SSL을 적용할 수 있습니다.

    sudo a2enmod ssl
    
    sudo systemctl restart apache2
    
  3. 기본 SSL 설정 파일 활성화

    sudo a2ensite default-ssl
    
  4. 여기까지 하고 Installation Complete 확인받으면 완료.

spring boot 에서 ssl 적용하려면..

  • 그리고 내가 사용하려는 서버는 Spring Boot 로 개발하였기 때문에 boot 에서 https 를 사용하려면 기본적으로 .p12(PKCS12) 또는 .jks(Java Key Store)형식의 SSL 키 저장소를 사용하여야 합니다.

  • ZeroSsl 에서 다운로드 받은 .crt 와 .key 를 .p12로 변환하는 방법은 다음과 같습니다.

    openssl pkcs12 -export -in certificate.crt -inkey private.key -out keystore.p12 -name mycert
    
  • spring booot yml 설정에는 아래 예제처럼… keystore.p12 는 src/main/resources/ 아래에…

server:
  port: 8443
  ssl:
    enabled: true
    key-store: classpath:keystore.p12
    key-store-password: "your-password"
    key-store-type: PKCS12
    key-alias: myalias
  • 서버에 install certificate 까지 마쳤다면 해당 서버에 ssl 인증서 적용이 완료.