Chrome 브라우저 최신 버전으로 업데이트 이후 예전에 적용했던 WoSign SSL 인증서를 신뢰하지 않는 문제가 발생했다.



관련 내용은 아래 주소를 참고:


https://www.xetown.com/square/416332



그래서 이번에는 Apache2 서버에 Chrome이 후원하고 있는 Lets' Encrypt 무료 인증서를 적용해 보도록 한다.


우분투 Ubuntu 16.04.2 LTS 에서는 고맙게도 설치 프로그램을 제공하고 있다.

$ sudo apt-get install letsencrypt


설치가 정상적으로 완료되면 아래 명령어를 이용해 인증서를 서버에 설치한다.

$ sudo letsencrypt certonly --webroot --webroot-path=웹루트_풀경로명 -d 대상_도메인명

 - Congratulations! Your certificate and chain have been saved .... 이라는 메시지가 나오면 성공이다.

(도메인이 여러개일 경우 -d 옵션을 여러개 지정하면 된다.)


아래 명령어를 통해 인증서 파일 목록을 볼 수 있다.

$ sudo ls  -l /etc/letsencrypt/live/


아파치 서버에 적용해보자.

아래 구문을 대상 conf 파일에 넣어주자. (기존에 설정한 게 있다면 주석 처리한다.)

SSLEngine on

SSLProtocol all -SSLv2 -SSLv3

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA


SSLHonorCipherOrder on


SSLCertificateFile "/etc/letsencrypt/live/도메인명/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/도메인명/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/도메인명/chain.pem"

아파치를 재기동하면 이제 정상적으로 인증서가 적용된 모습을 볼 수 있다.


Lets' Encrypt 인증서는 인증기간이 90일로 짧다. 따라서 주기적으로 인증서를 갱신해야 한다.

$ sudo crontab -e

----- 생 략 ----

# For more information see the manual pages of crontab(5) and cron(8)

# m h  dom mon dow   command

10 5 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log

15 5 * * 1 /usr/sbin/apache2ctl restart

이제 매주 월요일 5시 10분과 15분에 인증서를 갱신하고 아파치를 재기동 할 수 있다.


지난번 [Tomcat8 : SSL 인증서 적용하기 (WoSign 무료 인증서)] 글에 이어 이번에는 Apache2에 SSL 인증서를 적용하는 절차를 알아본다.


1. 개인키 파일 생성

# openssl genrsa -des3 -out private.key 2048


Generating RSA private key, 2048 bit long modulus

..................+++

................+++

e is 65537 (0x10001)

Enter pass phrase for private.key: (개인키 패스워드 입력)

Verifying - Enter pass phrase for private.key: (개인키 패스워드 입력)

2. CSR 생성

# openssl req -new -key private.key -out out.csr


Enter pass phrase for pri.kery: (개인키 패스워드 입력)

Loading 'screen' into random state - done 

You are about to be asked to enter information that will be incorporated 

into your certificate request. 

What you are about to enter is what is called a Distinguished Name or a DN. 

There are quite a few fields but you can leave some blank 

For some fields there will be a default value, 

If you enter '.', the field will be left blank. 

----- 

Country Name (2 letter code) [AU]:KR (국가코드 C)

State or Province Name (full name) [Some-State]:Seoul (시,도 ST)

Locality Name (eg, city) []:Gu-ro (구,군 L)

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Finkle (기관명 O)

Organizational Unit Name (eg, section) []:RnD (조직명 OU)

Common Name (eg, YOUR name) []:mydomain.co.kr (도메인명 CN)

Email Address []:my@email.com (이메일)


Please enter the following 'extra' attributes 

to be sent with your certificate request 

A challenge password []: enter

An optional company name []: enter


3. https://buy.wosign.com/free/ 접속 후 위에서 생성한 CSR 파일 내용 붙여넣기


4. zip 파일 다운로드

mydomain.co.kr_sha256_en.zip


5. 압축 파일 내 [for Apache.zip] 파일의 내용 추출 후 적용대상 서버에 업로드

1_root_bundle.crt

2_mydomain.co.kr.crt


6. 아파치 설정파일 변경


<VirtualHost *:443>

    SSLEngine on

    SSLCertificateKeyFile  /my/path/ssl/private.key

    SSLCertificateFile       /my/path/ssl/2_mydomain.co.kr.crt

    SSLCACertificateFile   /my/path/ssl/1_root_bundle.crt

</VirtualHost>


7. 아파치 재기동


무료로 SSL 인증서를 배포하는 wosign(회원가입 필요)에서 인증서를 생성해 Tomcat 서버에 적용하는 과정에서 몇 번의 삽질 끝에 성공한 절차를 기록해본다.



1. 개인키 파일 생성

# keytool -genkey -keyalg RSA -sigalg SHA1withRSA -alias mySSL -keysize 2048 -keystore mySSL.jks


키 저장소 비밀번호 입력:  

새 비밀번호 다시 입력: 

이름과 성을 입력하십시오.

  [Unknown]:  Finkle

조직 단위 이름을 입력하십시오.

  [Unknown]:  Finkle

조직 이름을 입력하십시오.

  [Unknown]:  RND

구/군/시 이름을 입력하십시오?

  [Unknown]:  Seoul

시/도 이름을 입력하십시오.

  [Unknown]:  Seoul

이 조직의 두 자리 국가 코드를 입력하십시오.

  [Unknown]:  KR

CN=Finkle, OU=Finkle, O=RND, L=Seoul, ST=Seoul, C=KR이(가) 맞습니까?

  [아니오]:  y


<mySSL>에 대한 키 비밀번호를 입력하십시오.

(키 저장소 비밀번호와 동일한 경우 Enter 키를 누름):  

새 비밀번호 다시 입력:


2. 생성된 파일 확인

# keytool -list -keystore mySSL.jks 


3. CSR 생성

# keytool -certreq -alias mySSL -keyalg RSA -sigalg SHA1withRSA -file mySSL.csr -keystore mySSL.jks

키 저장소 비밀번호 입력: 


4. https://buy.wosign.com/free/ 접속 후 위에서 생성한 CSR 파일 내용 붙여넣기


5. zip 파일 다운로드

mydomain.co.kr_sha256_en.zip


6. 압축 파일 내 [for Other Server.zip] 파일의 내용 추출 후 적용대상 서버에 업로드

root.crt

1_cross_Intermediate.crt

2_issuer_Intermediate.crt

3_user_mydomain.co.kr.crt


7. Tomcat에 적용할 정보 키스토어 파일에 적용

# keytool -import -trustcacerts -alias WoSignROOT -file root.crt -keystore mySSL.jks

# keytool -import -trustcacerts -alias CrossINTER -file 1_cross_Intermediate.crt -keystore mySSL.jks

# keytool -import -trustcacerts -alias IssuerINTER -file 2_issuer_Intermediate.crt -keystore mySSL.jks

# keytool -import -alias mySSL-file 3_user_mydomain.co.kr.crt -keystore mySSL.jks



8. 내용 확인

# keytool -list -v -keystore mySSL.jks


9. 톰캣 설정 파일 변경

$ vi server.xml

<Connector port="443" protocol="HTTP/1.1"

       maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

       clientAuth="false" sslProtocol="TLS" 

       keystoreFile="/home/path/tools/ssl/mySSL.jks" keystorePass="xxxx" />


10. 톰캣 재기동

+ Recent posts