2011-08-03 1 views
12

안녕하세요. 동료 Android 개발자.https 호출을 할 때 버전 키 저장소가 잘못되었습니다.

내 안드로이드 코드에서 https 보안 통화를하려고합니다. 에뮬레이터에서는 통화가 원활하게 진행되지만 실제 삼성 갤럭시 장치에서는 SSL 오류가 발생합니다.

나는 cetificate를 처리하기 위해 미친 봅슬레이 (mrazy bobs) 방법을 사용했습니다. 여기 미친 is 링크입니다 : http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html.

문제 : 사용자 정의 SSLSocketFactory 객체 내에 "키 스토어의 버전이 잘못되었습니다."라는 오류가 발생합니다.

이 문제를 해결하기위한 제안 사항은 무엇입니까? 감사합니다. .

+0

[안드로이드 전화에서 키 저장소의 잘못된 버전] (https://stackoverflow.com/questions/11117486/wrong-version-of-keystore-on-android-call)의 가능한 복제본 – Cukic0d

답변

28

Bouncy Castle 형식으로 키 저장소를 만들었습니까? (BKS를해야하며 특히 키 스토어 유형 ) 키 도구와 키 저장소를 만들 때이 모든 3 개 개의 매개 변수는 필수 : ​​

-storetype BKS 
    -provider org.bouncycastle.jce.provider.BouncyCastleProvider 
    -providerpath /path/to/bouncycastle.jar 

안드로이드는 키 스토어 을 만들 때이 버전을 사용하십시오, bouncycastle 버전 1.46를 사용 버전 1.46이 발견되었습니다 here

0

누구든지이 문제와 @Jcs를 우연히 만났을 때 탁월한 해답으로 해결할 수 없습니다. 정확히 같은 문제가 발생하여 웹 서버에 SSL 인증서를 올바르게 설치하지 못했음이 드러났습니다. digicert's SSL testing tool을 사용할 때 아이디어가 있습니다. 인증서 공급자가 중개 CA에서 서버 인증서에 서명하는 일반적인 방법을 사용했습니다. 발급자의 중간 CA를 루트 CA에 연결하는 인증서 체인을 설치 한 후 모든 것이 정상적으로 작동했습니다.

0

쉬운 대안은 BKS를 생성하는 Portecle을 사용하는 것입니다

  1. 다운로드 Boucycastle Provider 1.46
  2. 디렉토리 (예 : C:\Program Files (x86)\Portecle\bcprov.jar)를 설치하여 Portecle에 bcprov.jar를 교체합니다. 같은 이름이 필요합니다.
  3. Portecle을 다시 시작하고 BKS 트러스트 스토어를 생성하십시오.

비고 : 문제는 Android 4.0.3에서 발생했으며 문제가 해결되었습니다.

자세한 설명 here.

관련 문제