java에서 인증서를 사용하지 않고 http 연결과 함께 ssl을 사용할 수 있습니까? 난 임의의 숫자 또는 semetric 키를 사용합니다.자바에서 SSL없이 인증서없이 https
감사 Raihan
java에서 인증서를 사용하지 않고 http 연결과 함께 ssl을 사용할 수 있습니까? 난 임의의 숫자 또는 semetric 키를 사용합니다.자바에서 SSL없이 인증서없이 https
감사 Raihan
이지만 HTTPS는 RFC 2818 (특히 3.1 절)이 X.509 인증서를 명확하게 나타 내기 때문에 인증서를 필요로합니다.
this answer on ServerFault에서 자세한 내용을 확인할 수 있습니다. 매우 비슷한 질문입니다.
인증서없이 수행하는 작업은 RFC 2818의 범위를 벗어나지 만 여전히 작동 할 수 있습니다. 그러나 다른 구현에 의해 지원되는 것은 다를 수 있습니다. 인증서를 사용하지 않기로 결정한 경우에도 통신 보안을 위해 서버 식별 정보를 확인하는 방법이 필요합니다.
EDIT :
가 Oracle provider for JSSE는 PSK suties 암호화 방식 (또는 OpenPGP를 인증서에서)을 지원하지 않는다. 공유 키에 가장 가까운 것은 Kerberos 암호 스위트입니다. 다음과 같은 질문에 대한 허용 대답에서
아니, 당신은 할 수 없습니다. HTTPS를 통해 연결하려면 인증서가 필요합니다. 자신의 목적을 위해 자체 서명 된 인증서를 사용할 수 있습니다.
SSL 인증서가 필요하지만이 같은 자체 서명 된 인증서를 만들 수 있습니다
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048
이 인증서는 keystore.jks에 저장되어 360 일 동안 유효합니다.
http 서버 구현에 따라 일반적으로 keystoreFile
인수와 keystorePass
을 제공하여 키 저장소로 지정합니다 (Apache Tomcat의 HTTP 커넥터에서 가져온 등록 정보 이름이지만 다른 http 서버와 비슷합니다).
예, 대칭 키 (PSK 암호 군) 및 사용자 이름/암호 조합 (SRP 암호 군)을 포함하여 SSL/TLS에서 여러 가지 인증 방법을 사용할 수 있습니다. Java 내장 메커니즘에 대해서는 말할 수 없지만 out SecureBlackbox 제품 (해당 Java 버전 포함)을 사용하면 SSL/TLS 채널의 클라이언트 및 서버 측에서 위에서 언급 한 메커니즘을 사용할 수 있습니다. 또한 제공된 HTTPS 클라이언트 및 서버 구성 요소에도 적용됩니다.
봐 :
How to ignore SSL certificate errors in Apache HttpClient 4.0
당신은 기본적으로 아무것도 확인하지 않는의 TrustManager를 만들 필요가 그냥 모든 것을 신뢰합니다. 개발하는 동안 이것이 왜 유용한 지 알 수 있지만 SSL의 목적을 무효화합니다. TrustManager는 제 3자가 서버로 위장하여 데이터 등을 가로 채고 조작하는 Man In The Middle 공격을 피할 수 있습니다. 따라서 서버 인증서를 확인하지 않으면 아무도 '유효하지 않은'인증서를 제공 할 수 있습니다!
RFC 2818은 TLS에서 대체 방법을 도입하기 훨씬 전에 소개되었습니다. 결과적으로 RFC는 그 당시에 사용할 수있는 것이 없기 때문에 명시 적으로 인증서를 언급합니다. 또한 서버 신원은 공유 비밀 키 (PSK 스위트의 경우)를 알고 있거나 OpenPGP 키를 신뢰함으로써 (OpenPGP가 인증에 사용될 때) 확인할 수 있습니다. –
@ EugeneMayevski'EldoSCorp는 호기심에서 벗어나 JSSE API 내에서 * SecureBlackbox *를 추가 공급자로 통합하므로 (기존 Java 응용 프로그램에서 사용할 수있는 암호 제품군을 만들거나) 완전히 다른 API가 필요합니까? – Bruno
예, 기본 암호화는 수행하지만 SSL 및 기타 고급 기능의 경우 제공되는 다른 API가 제공되며 사용하기 쉽고 유연합니다. –