Programer/JAVA/C#
SSL Cipher Suites in Tomcat / JBOSS 암호화 설정 방법
샤푸한늑대
2013. 9. 24. 17:35
Tomcat / JBOSS 경우 약한 SSL 암호화를 비활성화 시키기 위해 server.xml 파일을 다음과 같이 변경후
서버를 재실행 시켜야 합니다.
server.xml |
<Connector port="8443" connectionTimeout="20000" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslEnabledProtocols="TLSv1.2" sslProtocol="TLSv1.2" keystorePass="asdfasdf" keystoreFile="conf/test/test.keystore"
ciphers="참고자료" |
"참고자료" 부분에는 아래 사이트에 해당하는 내용을 기입하면 됩니다.
여러개를 입력시에는 구분자는 콤마(,) 입니다.
ex)"TLS_RSA_WITH_AES_256_CBC_SHA256,
TLS_DH_DSS_WITH_AES_256_CBC_SHA256,
TLS_DH_RSA_WITH_AES_256_CBC_SHA256,
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
TLS_DH_anon_WITH_AES_256_CBC_SHA256"
또한 서버 시작시 옵션값을 추가해 줍니다.
시작 옵션값 |
-Djavax.net.ssl.keyStore=keystore path \ -Djavax.net.ssl.keyStorePassword=key passwd \ -Djavax.net.ssl.keyStoreType=jks \ -Djavax.net.ssl.trustStore=keystore path \ |
로직 추가 |
KeyStore ks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream(System.getProperty("javax.net.ssl.keyStore")), System.getProperty("javax.net.ssl.keyStorePassword").toCharArray()); KeyManagerFactory kmf = null; try{ kmf=KeyManagerFactory.getInstance("SunX509"); } catch(NoSuchAlgorithmException e) { try{ kmf=KeyManagerFactory.getInstance("IbmX509"); } catch(NoSuchAlgorithmException e1) { kmf=KeyManagerFactory.getInstance("PKIX"); } } kmf.init(ks, System.getProperty("javax.net.ssl.keyStorePassword").toCharArray()); KeyManager[] km = kmf.getKeyManagers();
SSLContext sslContext = SSLContext.getInstance(protocol); sslContext.init(km, null, null); SSLContext.getDefault().setDefault(sslContext); |
이렇게 하시면 TLS1.2 로 통신이 가능합니다.
TLS1.2로 통신하기 위해서는 반드시 JDK 1.7 이상이어야 합니다.