※ 참고 : Web Server를 이용하거나 L4 장비등을 이용하여 서비스를 하는경우가 아닌 Was를 이용한 단독 서비를 진행할 경우 SSL 인증서를 설치하는 케이스의 문서입니다. 


1. 준비사항

- 인증서 파일 : keystore 파일 혹은 *.jks 파일

- 인증서 파일의 패스워드 

- SSL 통신을 위한 방화벽 Open



2. 인증서 적용을 위한 설정파일 수정

- 인증서는 server.xml 파일을 수정하여 적용할 수 있습니다. 톰켓이 설치된 폴더의 conf/server.xml이 존재합니다. 


- Tomcat 6.x 이하 버전의 설정


1
2
3
4
5
6
7
8
9
10
<Connector port="443"
           protocol="HTTP/1.1" 
           SSLEnabled="true"
           maxThreds="150" 
           scheme="https" 
           secure="true" 
           clientAuth="false"
keystoreFile="/usr/local/tomcat/conf/domain.jks"
         keystorePass="password" 
           sslProtocol="TLS" 
/>
cs

 

- Tomcat 7.x 이상 버전의 설정 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<Connector port="443" 
           protocol="HTTP/1.1" 
           SSLEnabled="true"
           maxThreds="150" 
           scheme="https" 
           secure="true" 
           clientAuth="false"
           keystoreFile="/usr/local/tomcat/conf/domain.jks" 
         keystorePass="password"
           sslEnabledProtocols="TLSv1.1,TLSv1.2"
           ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
                    ,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
                    ,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
                    ,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
                    ,TLS_RSA_WITH_AES_128_CBC_SHA256
                    ,TLS_RSA_WITH_AES_128_CBC_SHA
                    ,TLS_RSA_WITH_AES_256_CBC_SHA256
                    ,TLS_RSA_WITH_AES_256_CBC_SHA" 
/>
cs


- KeystoreFile은 인증서 파일의 경로 입니다. 

- KeystorePass는 인증서의  패스워드 입니다.

- ciphers는 보안 문자열로 별도 구글링을 이용하여 공부하시기 바랍니다. 

  위에 예제로 나와있는 보안 문자열은 국내에서 일반적으로 사용함에 있어 적당한 보안 문자열 입니다. 

  단 해외 사이트에 적용할 경우 보안검열 시 걸릴 수 있습니다. 


  참고 : 해외 결제사이트에서 사용한 사이퍼 슈트 - URL : http://cheezred.tistory.com/88


- SSL 기본포트는 443포트 입니다.

  SSL관련 Connector에 주석처리가 되어있는 경우, 주석을 해제해 주시기 바랍니다.

  Windows 서버의 경우에도 아래와 같이 인증서 파일의 경로를 입력하시면 됩니다.

  keystoreFile="C:\Tomcat\conf\domain.jks"


- Protocol의 경우, server.xml에 설정된 기본 Protocol을 사용하시면 되고,서비스가 정상 실행되지 않을 경우,    

  protocol="HTTP/1.1" 이나 protocol="org.apache.coyote.http11.Http11Protocol" 로 변경한 후

  서비스 재시작하시면 됩니다.


3. 적용 테스트

- SSL 포트 확인

[root@certkorea bin]# netstat -nap|grep 443

tcp     0     0:0:0:0:443     0:0:0:0:*     LISTEN     14321/httpd 


- 방화벽 확인

사용하고 있는 방화벽에서 SSL포트(기본 443)를 80포트와 동일한 조건으로 OPEN 해주시기 바랍니다.


- 적용 후 WAS를 재기동 하신 뒤 https://서버주소를 주소창에 입력하신 후 해당 페이지가 https로 페이지가 열리면 정상적으로 설치가 완료된 것 입니다. 



 4. 오류 발생 시

- java.lang.Exception: No Certificate file specified or invalid file format 오류

jks 파일을 JAVA에서 인식하지 못하는 것으로, 아래의 두 가지 방법 중 하나로 처리가 가능합니다.

1) .keystore 파일로 처리

발급된 domain.jks 파일을 Unix/Linux 서버의 root 폴더(/)나 Windows 서버의 Administrator 폴더(C:\Documents and Settings\Administrator) 폴더에 복사하신 후, 파일이름을 .keystore로 변경한 후 저장

2) p12 파일로 처리

pkcs12 형식의 파일로 인증서를 변환발급 받으신 후 server.xml 파일을 아래와 같이 설정하신후 적용하시면 됩니다.


1
2
3
4
5
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtoco" 
           SSLEnabled="true" maxThreds="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keystoreFile="/usr/local/tomcat/conf/domain.p12"
           keystoreType="pkcs12" keystorePass="password" />
cs

- java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR 오류

APR로 SSL 설정을 해야하는 환경입니다.

SSLCertificateFile / SSLCertificateKeyFile / SSLCACertificateFile 항목으로 domain.crt / domain.key / chainca.crt 파일로 인증서를 설정해야 합니다.

1
2
3
4
5
6
7
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreds="150" scheme="https" secure="true" clientAuth="false"
           SSLCertificateFile="/usr/local/tomcat/config/ssl/domain.crt"
           SSLCertificateKeyFile="/usr/local/tomcat/config/ssl/domain.key"
           SSLCACertificateFile="/usr/local/tomcat/config/ssl/chainca.crt"
           sslProtocol="TLS" 
/>
cs


'Server' 카테고리의 다른 글

[Tomcat] 톰켓 기초 설정 가이드  (1) 2018.04.12
robots.txt 설정  (0) 2018.01.08
Activate HTTPS on JBoss AS 7  (0) 2016.02.23
[Weblogic] Was 기동 시 User Name / Pass word 묻는 경우  (0) 2016.02.01
[Tomcat 7.x] server.xml ciphers 설정  (0) 2015.12.18

+ Recent posts