SSL C/S 구현하는데 클라이언트에서 SSL Handshake 중 서버로부터 받는 인증서의 subject와 issuer를 보면 동일하죠. 이런 경우는 self-signed 인증서가 보내졌기 때문입니다.
그래서 저는 subject와 issuer가 다르게 하는 예를 알고 싶어서 또 삽질을 했습니다. ㅠㅠ issuer는 갑이고 subject는 을이 되는거죠. 갑을 CA로 두고 을의 인증서를 서명하게 되면 CA-signed 인증서가 됩니다.
그래서 저는 이 CA-signed 인증서를 SSL Handshake에서 사용하게 하려면 어떻게 해야 하는가... 고민 했습니다. 국내 검색에서는 한계가 있어서 구글링을 하였더니 alias를 동일하게 하면 된다(it worked 표현)고 하더군요. 되기는 - _-+ x뿔
회신의 인증서와 keystore의 인증서가 동일하지 않습니다.
위처럼 오류가 나던데요. 잘 안 되더라구요.
삽질의 해결 방법은... keytool로 처음부터 JKS에 만들어서 CSR 추출해서 하게 되면 위처럼 JKS에 못 넣고, openssl로 private key를 만들어서 CSR 발급, CA의 서명 과정을 거쳐서 private key와 CA-signed 인증서를 하나의 PKCS12 포맷으로 바꿉니다. 이를 다시 PKCS12 -> JKS로 바꿔서 사용하면 되더라구요.
keytool로 만들었더니 뺐다 넣기가 안 되서 삽질 한 것 같습니다. (이 방법으로도 할 수 있는데 제가 못 찾았은 것일 수 있습니다. ㅋ)
openssl로 키를 만들고 keytool로 키 관리를 하라는 선지자의 말씀을 무시한 죄로 또 삽질 당했습니다. 흑흑
- 케루 -
[참고1] alias 동일하게 하면 들어간다는 QnA (안되던데 - _-+)
http://forums.sun.com/thread.jspa?threadID=5355863
'SSL'에 해당되는 글 3건
- 2009/07/16 SSL 연결 시, CA 인증한 인증서로 handshake
- 2009/07/13 SSL, OpenSSL, X.509 검색자료
- 2009/07/13 How to convert a PKCS12 to JKS
링크만 걸어둡니다.
[X.509]
makecert.exe로 인증서 만들기
http://blog.naver.com/saeparam/90026081808
[OpenSSL]
OpenSSL to Keytool Conversion tips
http://conshell.net/wiki/index.php/OpenSSL_to_Keytool_Conversion_tips
[C]
http://blog.naver.com/xllos1234/40048563184
[Java]
Code Examples For Creating SSL Sockets
http://juliusdavies.ca/commons-ssl/ssl.html
Example :: AuthSSLProtocolSocketFactory.java
http://www.devdaily.com/java/jwarehouse/commons-httpclient-2.0.1/src/contrib/org/apache/commons/httpclient/contrib/ssl/AuthSSLProtocolSocketFactory.java.shtml
OpenSSL로 구현된 서버와 자바 클라이언트 통신
http://kldp.org/node/28194
[C#]
C#에서 OpenSSL 사용하기
http://blog.naver.com/swparkz/80049482003
C#: How to accept an invalid SSL certificate programmatically
http://blog.jameshiggs.com/2008/05/01/c-how-to-accept-an-invalid-ssl-certificate-programmatically/
Security Library
http://www.mentalis.org/soft/projects/seclib/download.qpx
C# client to Java ObjectInputStream - howto
http://bytes.com/groups/net-c/238103-c-client-java-objectinputstream-howto
C# SSL certificate
http://bytes.com/topic/net/answers/869736-c-ssl-certificate
- 케루 -
이 글에서는 PKCS12-to-JKS 변환에 대해 알려드리고자 합니다. JKS-to-PKCS12 변환은 네이x 검색에 쉽게 찾을 수 있습니다. keytool 최신 버전에서는 option에서 지원하는 것 같은데요[참고1]. 또 변환하는 Java 코드를 작성하는 프로그램도 찾을 수 있었습니다[참고2]. [참고1]과 [참고2]는 제가 시도해보지 않아 되는지 안 되는지 장담 할 수 없습니다. ㅋ
저는 portecle(포테끌? 포테클?)이라는 공개 프로그램을 이용했습니다. jar 파일로 배포되고 있고요. 실행하면 아래와 같은 화면이 나옵니다. 뭐, 사용방법은 간단합니다. jks Keystore를 생성하고 Tools 메뉴의 Import Key Pair로 PKCS12 파일(.pfx, .p12 등)을 가져오면 됩니다. 꼭 저장하시구요.
제가 참고한 원문은 [참고3]에 있습니다. :-) 꾸벅
ps. keytool에서 option으로 지원하면 위 프로그램을 사용할 필요는 없습니다. :-0
[참고1] How to Convert PKCS#12 to JKS with the JDK
http://fernandoribeiro.eti.br/2009/03/17/how-to-convert-pkcs12-to-jks-with-the-jdk/
[참고2] Importing pkcs12 data into jks keystore
http://quicktechnicalnotes.wordpress.com/2009/07/03/importing-pkcs12-data-into-jks-keystore/
[참고3] How to convert a PKCS12 to JKS
http://blog.asyd.net/2009/07/how-to-convert-a-pkcs12-to-jks/