Server

SSL 인증서 설치

J1Eun 2023. 3. 8. 13:21

SSL 인증서 발급

1. 인증서 발급처

SSL 인증서 발급처는 comodo(sectigo), digicert 등 다양한 발급처가 존재하고, 발급처마다 가격이 다르다.

발급처에서 직접 발급 신청 후 설치하는 방법이 있고, whois 등 도메인 관리 사이트에서 SSL 적용을 지원하는 경우도 있으니 인증서를 설치하려는 사이트의 특성에 맞게 구매를 하면 된다.

 

다양한 발급처 중 sectigo 사가 가장 저렴하고, 설명이 잘 되어있어 해당사에서 구매 및 설치를 진행했다.

 

2. 인증서 종류

SSL 인증서는 인증 단계에 따라 DV, OV, EV로 나뉜다.

 

- DV (Domain Validation)

: 도메인의 소유 정보로만 인증, 발급: 5분 소요, 개인 홈페이지, 중소기업에서 많이 사용

 

- OV (Organization Validation)

: 소속되어 있는 회사(조직)의 정보로 추가 인증, 발급: 1~3일 소요, 중견기업, 대기업에서 많이 사용

 

- EV (Extended Validation)

: 도메인 소유 정보 + 소속 회사 실체 확인 + 법인 2년 이상 운영 등 조건 충족 시 발급가능, 발급: 최대 3주 소요 - 공공 기관, 금융권, 카드사에서 많이 사용

 

이번에 SSL 인증서를 설치할 사이트는 일반 홈페이지로 다루는 개인정보가 적고, 방문자 수가 적기 때문에 가장 단계의 DV Single 을 적용했다.

 

3. 인증서 발급

sectigo 사이트에 들어가면 SSL 인증서의 종류를 고를 수 있고, 다양한 제품을 확인할 수 있다. (https://www.kicassl.com/)

제품을 고른 후 '신청하기' 버튼으로 인증서 신청이 가능하다.

 

발급받을 확장자(.pem or .pfx) 선택, 설치할 웹서버 선택

 

- .pem(Privacy Enhanced Mail)

:  Base64인코딩된 ASCII text 파일, 인증서 또는 키 값을 저장하는데 많이 사용, 인증서(공개키), 개인키, 인증서 발급 요청을 위해 생성하는 CSR(Certificate Signing Request) 등을 저장하는데 사용, 주로 사용

 

- .pfx/.p12(Personal Information Exchange Format)

: PKCS#12 바이너리 포맷, 주로 Windows IIS 기반에서 인증서 적용/이동시 활용, 개인키, 서버인증서, 루트인증서, 체인인증서를 모두 담을수 있어서 SSL 인증서 적용이나 또는 이전시 상당히 유용하고 편리함, Tomcat에서 pfx 설정을 지원함 (요즘 늘어나는 추세)

 

발급 받을 도메인 입력 및 인증 방식 선택

 

도메인은 발급 받으려는 사이트의 주소를 입력한다. (www 제외) (ex. test.com)

인증방법 선택은 우측 설명(?)을 참고해서 선택한다.

 

CSR 정보를 위임할지 선택 후 설정할 비밀번호 입력

 

신청자 정보 입력 후 장바구니에 담고, 결제 진행

결제 시 결제 회사 정보가 필요함 (사업자등록증에 표기된 정보 필요)

 

결제 진행 후 DV 의 경우 10분 이내로 인증서 이메일 인증 요청 메일이 오고, 이메일 인증 후 10분 이내로 인증서가 발급된다.

 

* Tip. 고객지원 > 견적서 신청을 통해 견적서를 받아보고 문의 후 결제하는게 좋다.

 

! 웹 서버를 잘못 선택 또는 변경했을 경우

마이페이지 > 인증서 관리 > 발급한 인증서 선택 > 재발급 선택 > 웹 서버 변경 후 신청

1일 이내로 재발급되어 메일로 키정보가 온다.

 

* Tomcat > jks 파일

* NginX > cert.pem, key,pem 파일


SSL 인증서 설치

1. Tomcat

1) .jks 파일 서버로 이동

2) server.xml TLS 내용 변경

- 기존 코드

<!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
     This connector uses the NIO implementation that requires the JSSE
     style configuration. When using the APR/native implementation, the
     OpenSSL style configuration is required as described in the APR/native
     documentation -->
     
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
       maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" />

- 변경 코드

 <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
     This connector uses the NIO implementation that requires the JSSE
     style configuration. When using the APR/native implementation, the
     OpenSSL style configuration is required as described in the APR/native
     documentation -->
     
    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" 
           keystoreFile="[.jks 파일 위치]"
           keystorePass="[인증서 비밀번호]"
           sslProtocol="TLS" />

3) Tomcat 재시작

 

2. Nginx

1) 파일

AWS Linux 서버를 사용하고 있기 때문에 원하는 경로에 폴더 생성 및 keystore 파일 이동

 

2) nginx.conf 수정

80으로 접속 시 https://도메인.com 의 경로로 리다이렉트 처리

 

3) docker 확인

nginx가 docker 환경 위에 있기 때문에 서버 재시작 전 bind 정보 더블 체크

 

> docker ps

WEB(nginx), WAS(tomcat) 으로 구성

* WEB, WAS 둘 중 아무데나 ssl 인증서 설치를 해도 상관 없으나 WEB에 설치를 권장한다고 함.

> docker inspect nginx

 

4) nginx conf 테스트

cert.pem 파일이 없다고 뜸

-> docker 환경으로 구성되어 있기 때문에 mount 된 host의 경로를 적어줬는데, host 경로가 아닌 container의 경로를 적어줘야 함

 

경로 변경 후 다시 테스트 > 성공

 

5) nginx reload

기존에는 nginx restart 또는 stop &start 를 했어야하지만

reload 만으로 conf 파일 적용 가능

 

6) 접속 확인

http 로 접속 시 https 로 변경됨

기존에 도메인.co.kr 도 적용을 해야해서 2개의 인증서를 구매하려 했지만 nginx.conf 에서 80 포트로 접속되는 모든 세션을 도메인.com 으로 리다이렉트 처리하여 도메인.co.kr 로 접속되는 경우 도메인.com 으로 변경

 

대신, https://도메인.co.kr로 접속 시 연결할 수 없는 페이지라고 뜸. -> 이걸 해결하기 위해서는 도메인.co.kr에 대한 SSL 인증서 발급 후 SNI를 적용하여야함. 

 


SNI 적용

도메인.co.kr 과 도메인.com 두 도메인에 대한 SSL 적용 처리

 

1. 파일 이동

 

2. 도메인.co.kr SSL 설정

기존에 설정한 도메인.com 과 동일한 내용으로 도메인.co.kr 의 server 설정 추가

3. 80 포트 리다이렉션 처리

 

4. nginx.conf 테스트 및 reload