반응형

설명

  • SSL 설정할 도메인 : apache01.example.com

Let's Encrypt 특징

  • 인증서의 유효기간은 90일이므로 90일마다 갱신해야함​
  • 만료 2주정도 전에 등록한 이메일 주소로 인증서 만료 예정 메일이 발송됨 (그 전에는 연장 불가)
 

certbot 다운로드

mkdir -p /home/ubuntu/script \
&& cd /home/ubuntu/script \
&& wget https://dl.eff.org/certbot-auto \
&& chmod a+x certbot-auto
 

SSL 인증서 발급

  • 발급 명령어 실행
    ./certbot-auto certonly --manual
    
  • 입력하라는 내용 입력
    이메일 : test@gmail.com
    도메인 : apache01.example.com
    
 
  • .well-known 경로를 포함한 정보가 나오는지 확인
    Create a file containing just this data:
    
    pmpfqooRUI6piCBNDiYMl7ENucsZlYJiMSi31\_-OwJs.XmuP3xKSYiVlyZgs_zEz_V3YK7ZOedleYH2RFNQ36ms
    
    And make it available on your web server at this URL:
    
    http\://apache01.example.com/.well-known/acme-challenge/pmpfqooRUI6piCBNDiYMl7ENucsZlYJiMSi31_-OwJs
    
 
  • 서버에 파일 생성
    • 경로
      • $DOCUMENT_ROOT/.well-known/acme-challenge/pmpfqooRUI6piCBNDiYMl7ENucsZlYJiMSi31_-OwJs
    • 내용
      pmpfqooRUI6piCBNDiYMl7ENucsZlYJiMSi31_-OwJs.XmuP3xKSYiVlyZgs_zEz_V3YK7ZOedleYH2RFNQ36ms
      
   
  • 엔터를 순서대로 눌러 나머지 명령어를 수행
 
  • 완료 후 키파일 생성 확인
    • 경로 : /etc/letsencrypt/live/도메인명
   

httpd.conf 파일 수정

  • 경로 : $APACHE_HOME/conf/httpd.conf
# 기존 common 로그 포맷 하위에 common_ssl 로그 포맷 추가
LogFormat "%h %l %u %t %{HOST}i \\"%r\\" %>s %b" common
LogFormat "%h %l %u %t %{HOST}i \\"%r\\" %>s %b %{SSL_PROTOCOL}x %{SSL_CIPHER}x" common_ssl


# 하단에 httpd-ssl.conf include 코드 추가
Include conf/extra/httpd-ssl.conf

httpd-ssl.conf 파일 수정

<VirtualHost _default_:443>

    ...

    CustomLog "|/home/ubuntu/app/apache/bin/rotatelogs /home/ubuntu/app/apache/logs/access.%Y-%m-%d.log 86400 +540" common_ssl

    ...

    SSLEngine on

    ...

    SSLCertificateFile         "/etc/letsencrypt/live/apache01.example.com/cert.pem"

    SSLCertificateKeyFile     "/etc/letsencrypt/live/apache01.example.com/privkey.pem"

    SSLCertificateChainFile  "/etc/letsencrypt/live/apache01.example.com/chain.pem"

</VirtualHost>

기타 명령어

  • 만료일 확인
    ./certbot-auto certificates
    
 
  • 갱신 (성공시 아파치 재실행)
    ./certbot-auto renew --renew-hook "sudo /home/ubuntu/app/apache/bin/apachectl restart"
    
   

참고사항

  • 설정 완료 후 아파치를 반드시 재실행할 것
  • 인증 과정 중 .well-known 디렉토리 하위 파일 접근을 위해 mod_jk 설정을 .well-known 경로 허용 후 설정 완료 후 원래대로 되돌릴 것
  • SSL 설정 완료 후 .well-known 디렉토리 및 파일은 불필요하므로 삭제할 것
   

[이슈] 인증서 발급 명령어 실행시 아래 문구 오류 발생

  • E: Package 'python-virtualenv' has no installation candidate
  • 아래 과정 수행 후 인증서 발급 재시도
sudo vi /etc/apt/sources.list
# 변경 전
#deb http://archive.ubuntu.com/ubuntu bionic main 
#deb http://archive.ubuntu.com/ubuntu bionic-security main
#deb http://archive.ubuntu.com/ubuntu bionic-updates main

# 변경 후
deb http://archive.ubuntu.com/ubuntu bionic main universe
deb http://archive.ubuntu.com/ubuntu bionic-security main universe 
deb http://archive.ubuntu.com/ubuntu bionic-updates main universe
sudo apt update
   

[이슈] 도메인 변경 후 SSL 재발급시 renew명령으로 갱신 실패할 경우

  • /etc/letsencrypt/renewal 디렉토리 안에 이전 도메인명의 conf파일을 제거 후 신규 도메인에 해당하는 설정을 755 퍼미션으로 변경 후 재시도해볼 것
   

[이슈] 멀티 도메인 연결시 [warn] _default_ VirtualHost overlap on port 443, the first has precedence 오류 발생

  • httpd-ssl.conf 파일에 NameVirtualHost *:443 << 추가 후 아파치 재시작
   

[이슈] ./certbot-auto renew 명령어로 갱신시 오류 발생

  • 오류 메시지
    Cert is due for renewal, auto-renewing...
    Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
    The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)
    Attempting to renew cert (apache01.example.com) from /etc/letsencrypt/renewal/apache01.example.com.conf produced an unexpected error: The manual plugin is not working; there may be problems with your existing configuration.
    The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',). Skipping.
    All renewal attempts failed. The following certs could not be renewed:
      /etc/letsencrypt/live/apache01.example.com/fullchain.pem (failure)
    
  • 해결
    • 아파치를 종료한 후 아래 명령어로 갱신을 수행한 다음 다시 아파치를 실행한다.
    ./certbot-auto renew --standalone --preferred-challenges http
    

참고 URL

반응형

'Development > Apache & Tomcat' 카테고리의 다른 글

[Tomcat] 설치하기  (0) 2018.07.29
[Apache] mod_jk 설치  (0) 2018.03.27
[Apache] Log Rotation 적용  (0) 2018.03.27
[Apache] Request Method 제한 설정  (0) 2018.03.27
[Apache] 에러 페이지 설정  (0) 2018.03.27

+ Recent posts