2009-04-06 2 views
10

See related question.PEM 파일을 사용하여 Java에서 SSL 소켓을 만드는 방법은 무엇입니까?

은 내가 PEM 파일이 나에게 제공과 일부 API 호출에 대한 C++ 서버에 연결하는 SSL 소켓을 수립 필요합니다 들었다 있습니다. 누구든지 PEM 파일을 읽고 연결하는 방법을 알고 있습니까? 나는 또한 parapharse 패스워드를 받았다.

+0

중복; 나는이 질문의 다른 버전이 더 유익하다고 생각한다. – erickson

답변

9

PEM 파일이 서버에 로그인하는 데 사용할 클라이언트 인증서 인 것처럼 들립니다. 그것이 클라이언트 인증서이고 그것이있는 것처럼 들리면 연결을 설정하기 위해 서버 인증서의 유효성 검사에 사용할 ca 인증서 파일이 필요할 것입니다.

CA 인증서는 트러스트 스토어에 들어가야하며 클라이언트 인증서는 키 저장소에 들어 있어야합니다. Java에서는 이들 모두 JKS가됩니다 (PKCS12에 대한 지원이 제한되어 있음에도 불구하고). 각 사용자는 물론 JRE의 기본 키 저장소/신뢰 저장소 위치가 있습니다. 아래 예제와 같이 코드에서 이러한 파일의 외부 위치를 지정할 수도 있습니다. commons-ssl 라이브러리는 JKS가 필요없이 PEM을 직접 지원할 수있는 것으로 보이지만 사용하지는 않았습니다.

Java에서 이러한 키 저장소의 기본 암호는 따옴표없이 "changeit"입니다.

This page은 PEM을 키 저장소/트러스트 스토어로 읽어야한다는 것을 보여줍니다. 여기에 another example입니다. 당신이 당신의 신뢰 및 키 스토어가 제대로 설정 한 후

, 당신이 당신의 JVM에 다음 JSSE system properties 전달해야합니다

javax.net.ssl.keyStore 
javax.net.ssl.keyStoreType 
javax.net.ssl.keyStorePassword 
javax.net.ssl.trustStore 
javax.net.ssl.trustStoreType 
javax.net.ssl.trustStorePassword 

당신은 예에서와 같이 JRE에 -D 매개 변수로 지정하거나 할 수있다 아래에, programatically.

일단 끝내면 commons-ssl example 소켓 만들기에 대해 이야기합니다. 또한 SSLSocket에 대한 Java API도 있습니다. Heres는 또한 아파치 공유지를 사용하지 않는 example입니다.

+1

Ahmm .. nice answer -하지만 그는 실제로 자바가 아니라 C++에 대해 물었다. – Guss

+4

실제로 그는 Java 및 JKS라는 태그를 붙였습니다.이 키는 Java KeyStore입니다. 그는 SSL 소켓을 사용하여 원격 서버에 연결하려고합니다. 다른 쪽 C++이 연결 메커니즘과 관련이 없다는 사실. –

0

SSL을 처리하는 라이브러리가 필요합니다. John Ellinwood가 언급했듯이 일부 프레임 워크 (예 : Java 2 SE)는 이러한 내장 기능을 제공하고 타사 라이브러리에는 타사 라이브러리를 사용해야합니다.

C 개발자는 종종 openssl을 직접 사용하지만 쉽게 이해할 수는 없으며 C++을 사용할 때 쉽게 떨어질 수있는 몇 가지 "잡아 당김"이 있습니다.

QT의 네트워크 라이브러리 또는 Poco NetSSL과 같이 SSL을 지원하는 C++ 네트워크 라이브러리를 사용하는 것이 좋습니다. API 설명서에 대한 자습서 설명서 and herehere을 참조하십시오. 아마도 PEM 파일을 직접 가져 오는 initializeClient을보고 싶을 것입니다.

관련 문제