2013-07-09 3 views
3

SSLSocketFactory을 얻는 일반적인 방법은 을 TrustManager, KeyManager 및 으로 초기화하고 getSocketFactory() 메서드를 사용하는 것입니다. 그러나 이것은 필요한 암호 스위트 또는 프로토콜을 활성화 할 수 없습니다.HttpsURLConnection을 사용하여 만든 소켓에 사용할 암호 및 프로토콜 목록을 설정하는 방법은 무엇입니까?

이러한 변경을 허용하는 HttpsURLConnection이 허용하는 유일한 구성은 기본값 인 SSLSocketFactory을 설정하는 것입니다. SSLSocketFactory을 확장하고 getDefaultCipherSuites() 메서드를 재정의하고 createSocket()으로 만든 소켓을 랩핑하여 필요한 암호와 프로토콜을 설정할 수 있습니다. 그러나이 방법을 사용하면 연결에 TrustManager을 초기화 할 수 있습니까?

암호 스위트와 프로토콜을 설정하고 트러스트 관리자를 초기화 할 수있는 방법이 있습니까?

답변

3

SSLSocketFactorySSLContext.getSocketFactory() 의해 얻어진 가지고 또한 필요한 암호를 설정 SSLContext에서 얻은 것과 위임되지만 createSocket()SSLSocketFactory에서의 커스텀 서브 클래스에 싸서.

1

JSSE 참조 가이드를 참조하십시오. 시스템 특성을 통해 암호 스위트를 설정할 수 있습니다.

+0

시스템 속성을 통해 설정된 경우 전역이됩니다. 특정 연결이나 특정 응용 프로그램에 대해서만 설정할 수 있습니다. – varrunr

+0

동의. 그러나 당신은 귀하의 질문에 그 요구 사항을 명시하지 않았습니다. – EJP

+2

완전성을 위해 (단지 [this as a duplicate] (http://stackoverflow.com/q/24888420/372643)를 닫았습니다.) 관련 시스템 속성은'https.cipherSuites'입니다. – Bruno