본문 바로가기
IT/개발

[mqtt]java client SSL 적용하기

by 말도 2015. 1. 15.
728x90
반응형

1. 인증서 변환

java에 사용되는 인증서는 일반적인 cafile이 아닌 keystore가 사용된다.


- keystore.jks - 서버(SimpleHttpsServer) 에서 사용하는 인증키 저장소

- truststore.jks - 클라이언트(HttpsClientWithCustomCert) 에서 서버 인증시 사용하는 인증서 저장소


서버에 있는 인증서를 truststore.jks로 변형하여 사용하여야한다.


변환법 

1) keystore 

- 먼저 certfile 과 keyfile을 이용하여 pkcs12 의 인증서를 생성한다.

openssl pkcs12 -export -in [CERTFILE.crt] -inkey [KEYFILE.key] -out [OUTFILE.p12] -name "some alias"


- 이후 keytool을 이용하여 pkcs12 파일을 keystore파일로 변환한다.

keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore [OUTFILE.jks] 

 -srckeystore [INFILE.p12] -srcstoretype PKCS12 -srcstorepass [PASSWORD] -alias "some alias"


2) truststore

- 먼저 cafile을 der 파일로 변환한다.

openssl x509 -outform der -in [CAFILE] -out [OUTPUTFILE]


- 이후 keystore을 이용하여 der파일을 truststore로 만든다.


keytool -import -alias "some alias" -keystore [OUTFILE.jks] -file [INFILE.der]



2.자바 적용하기

1) ConfigInfo.java

 public static final Properties getSSLSettings() {

   final Properties properties = new Properties();

   properties.setProperty("com.ibm.ssl.trustStore", 

       "C:\\Program Files (x86)\\Java\\jre1.8.0_25\\truststore.jks");

   properties.setProperty("com.ibm.ssl.trustStoreType", 

       "JKS");

   properties.setProperty("com.ibm.ssl.trustStorePassword", 

       "[PASSWORD]");

   return properties;

 }


2)Pubsync.java

connOpts.setSSLProperties(ConfigInfo.getSSLSettings());  



불펌이 많아 댓글에 메일주소 알려주시면 보내드리도록 하겠습니다.



반응형