Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

...

Expand

Certbot 설치(Ubuntu 20.04 기준)

Certbot은 설치 방법과 패키지가 다양합니다. 여기서는 apt를 사용하여 certbot과 python3-certbot-apache를 설치합니다.

Note

Certbot 설치에 실패할 경우 다음 작업을 수행 후 진행하십시오.

  • 방화벽 해제

  • 80, 443 포트 미사용

Code Block
# certbot, python3-certbot-apache 설치
apt install -y certbot python3-certbot-apache

인증서 발급 및 자동 갱신

인증서 발급

다음 명령과 캡쳐 이미지를 참고하여 SSL 인증서를 발급합니다.

Code Block
# 인증서(apache용)만 발급
certbot certonly --apache -d docs.mantech.co.kr
Code Block
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): user@mantech.co.kr

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Account registered.
Requesting a certificate for docs.mantech.co.kr

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/docs.mantech.co.kr/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/docs.mantech.co.kr/privkey.pem
This certificate expires on 2022-08-24.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
...

인증서 확인

Code Block
ls /etc/letsencrypt/live/docs.mantech.co.kr/

30일마다 자동 갱신 (유효기간 90일)

Code Block
# 갱신 가능 여부 확인
certbot renew --dry-run

# crontab으로 자동 갱신 설정
crontab -e

# 매월 1일 05시에 갱신
0 5 1 * * certbot renew

keytool 로 keystore.p12 생성

Panel
bgColor#FFEBE6
  • 기존 데이터 복사로 인해 /3rabbitz/keystore.p12 파일이 있다면 삭제 후 인증서를 생성하십시오.

  • 이때 입력한 비밀번호를 기억하여 이후에 server.xml 파일 설정 시 입력하십시오.

Code Block
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650

새 비밀번호 다시 입력: 
이름과 성을 입력하십시오.
  [Unknown]:  
조직 단위 이름을 입력하십시오.
  [Unknown]:  
조직 이름을 입력하십시오.
  [Unknown]:  
구/군/시 이름을 입력하십시오?
  [Unknown]:  
시/도 이름을 입력하십시오.
  [Unknown]:  
이 조직의 두 자리 국가 코드를 입력하십시오.
  [Unknown]:  
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown이(가) 맞습니까?
  [아니오]:  yes

pkcs12 형식으로 변경

다음 명령 시 /3rabbitz/에 keystore.p12 파일이 생성됩니다.
이후 tomcat의 server.xml 설정 시 keystore.p12 파일 경로를 입력해야 합니다.

Code Block
openssl pkcs12 -export -in /etc/letsencrypt/live/docs.mantech.co.kr/fullchain.pem -inkey /etc/letsencrypt/live/docs.mantech.co.kr/privkey.pem -out /3rabbitz/keystore.p12 -name tomcat -CAfile /etc/letsencrypt/live/docs.mantech.co.kr/chain.pem -caname root

...

Expand
titleserver.xml, web.xml 수정

/3rabbitz/tomcat/conf/server.xml 수정

2개의 기존의 <Connector>를 주석 처리하고 80, 443 포트를 설정하는 <Connector>수정합니다추가합니다.

Code Block
languagebash
vi /3rabbitz/tomcat/conf/server.xml
Code Block
languagexml
...

<Server port="5791" shutdown="SHUTDOWN">

  <Service name="Catalina">
          <!--
    <Connector port="8009" protocol="AJP/1.3" address="0.0.0.0" secretRequired="false" redirectPort="8443" URIEncoding="UTF-8" maxPostSize="-1" Server="3Rabbitz" />
    <Connector port="1975" protocol="HTTP/1.1"
          connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" maxPostSize="-1" Server="3Rabbitz" />
          -->

    <Connector port="80" protocol="HTTP/1.1" relaxedQueryChars="^`\|{}[]"
    connectionTimeout="20000" redirectPort="443" URIEncoding="UTF-8"
    maxPostSize="-1" Server="3Rabbitz" />

    <Connector port="443" protocol="HTTP/1.1" relaxedQueryChars="^`\|{}[]"
    connectionTimeout="20000" URIEncoding="UTF-8"
    maxPostSize="-1" Server="3Rabbitz"
    SSLEnabled="true" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS"
            keystoreFile="/3rabbitz/keystore.p12"
    keystorePass="roqkf2xla"
    keystoreType="PKCS12" />

    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost" appBase="/" unpackWARs="true"
        autoDeploy="false" deployOnStartup="false" createDirs="false">
...

/3rabbitz/tomcat/conf/web.xml 수정

</web-app>위에 다음과 같이 <security-constraint> 를 추가합니다.

Code Block
vi /3rabbitz/tomcat/conf/web.xml
Code Block
...
<web-app>
...
 <security-constraint>
        <web-resource-collection>
            <web-resource-name>All Requests</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
</web-app>

...