2017-02-09 2 views
1

여기에 나와있는 답변을 찾으려고했지만 내 문제를 해결하는 데 아무 것도 찾지 못했습니다.발리 라이브러리 및 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 %는 두 번째 링크와 비슷하지만 아주 작은 변경 사항이있는 경우에만 해당).

+0

.crt는 키가 아닙니다. 그것은 인증서입니다. SSLv2 또는 적어도 SSLv2ClientHello를 활성화 한 곳. – EJP

답변

0

불만족의 사례로이 주제를 고려하십시오. 이 작품을 만들려고 노력의 시간 후에 우리는 작동하도록 만들 :

  • 우리 (그들은 각 3개월을 변경하기 때문에) 그래서 응용 프로그램에 키를 추가하는 끔찍한 생각이
  • 지원되지 않는 프로토콜 예외가 온 것입니다, 자체 서명 된 인증서를 사용하지 않는 이 애플리케이션에서 지원되는 이전 Android API (< 20 또는 < 21). 내가 이해할 때 (SSL 연결에 대한 나의 가난한 지식을 고려하여) 우리 사이트에서 TLS를 사용하지만 오래된 Android 시스템 (Lollipop 이전 버전)은 기본적으로이 기능을 해제했습니다. 이 문제를 수정하는 적절한 방법은 사용자 지정 TLSSocketFactory를 만들고이를 RequestQueue를 초기화하는 데 사용되는 HurlStack에서 사용하는 것입니다. 그 예외가 사라진 후에
+0

예제 또는 코드를 공유 할 수 있습니까? – aung