여기에 나와있는 답변을 찾으려고했지만 내 문제를 해결하는 데 아무 것도 찾지 못했습니다.발리 라이브러리 및 HTTPS 요청
프로젝트에서 나는 우리 도메인을 변경하려고합니다. 변경은 조금 까다 롭습니다. 우리는 HTTP에서 HTTPS 로의 연결을 변경해야합니다. .crt 키를 받았습니다 (예 : example.tech.crt - 회사 이름을 모두 "example"으로 변경). 몇 시간의 끊임없는 실패 이후 나는 여기서 글을 쓰기로 결심했다.
먼저이 튜토리얼 http://ogrelab.ikratko.com/using-android-volley-with-self-signed-certificate/을 사용해 보았습니다. 작동하지 않았습니다. API23 때문에 사용되지 않는 Apache 라이브러리를 사용해야한다는 의미도 아닙니다. 이 필요할 경우, 이것이 내가 BKS 파일을 생성하는 방법입니다 - (도메인 이름 확인을 무시로) 가장 좋은 대답의 하나 그런
keytool -importcert -v -trustcacerts -file "example.tech.crt" -alias example_tech
-keystore "example_tech.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider
-providerpath "bcprov-jdk16-146.jar" -storetype BKS
을, 나는이 방법 Does Android Volley support SSL?을 시도했다.
CertificateFactory cf = CertificateFactory.getInstance("X.509");
어딘가에 제안
CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");
에 - 오류가 계속 지속 : 나는 오류를 캐스팅에 대한 몇 가지 예외를 가지고, 그래서 라인을 변경 - 나는 아직도 BKS 파일을 사용했습니다. 나는 BKS 대신에 .crt 파일을 사용하려고 노력했다 - 나는 아직도 실패한다.
javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException:
SSL handshake aborted: ssl=0x650f83a0: Failure in SSL library, usually a protocol error
error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol
(external/openssl/ssl/s23_clnt.c:714 0x5fda0d74:0x00000000)
내가 우체부를 사용하여 거의 동일한 요청을하려고 노력하고 아무 문제없이 동일한 주소에서 작동, 그래서 이것은 서버 문제가되지 않습니다 :
매 시간
나는 같은 오류가 발생합니다. 나는 example.tech, www.example.tech, example.tech:80과 같은 다양한 도메인을 사용하려고 노력했다. 물론 항상 https를 사용했다. 다음은는 (물론 검열) 예 컬 같은 요청입니다 :
curl request: curl -X "POST"
-D "grant_type=password&password=[passwordHere]&username=[emailHere]&"
-H 'Authorization: Basic [tokenHere]
"https://example.tech/oauth/token"
내 코드 뭐가 잘못보고 실패하고 내가 여기에 잘못 뭐하는 거지보고 정말 행복 할 것입니다. 더 이상 필요한 코드가 있다면 자유롭게 물어보십시오 (99 %는 두 번째 링크와 비슷하지만 아주 작은 변경 사항이있는 경우에만 해당).
.crt는 키가 아닙니다. 그것은 인증서입니다. SSLv2 또는 적어도 SSLv2ClientHello를 활성화 한 곳. – EJP