2013-05-31 3 views
1

현재 SSLSocket을 테스트 서버에 연결해야하는 Android 애플리케이션을 개발 중입니다.SSLSocket 연결 신뢰 인증서

생산이 아닌 테스트 서버이므로이 서버에 대한 인증서를 구매하지 않습니다.

이 시뮬레이터에서 잘 작동하지만, 그러나 내 S3에 내게이 오류 준다 :

mSf = (SSLSocketFactory) SSLSocketFactory.getDefault(); 
mSocket = (SSLSocket) mSf.createSocket("myTestingServer.com", 443); 
mSocket.startHandshake(); 

내가 돈 '예외는

06-01 00:36:17.355: I/System.out(13629): java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 

이 코드의 마지막 줄에 의해 발생을 정말로 솔루션이 코드인지 아니면 안드로이드 사용자로서 보안 검사를 낮추는 지 신경 쓰지 마라. 내 S3에서 테스트하기 때문에 프로덕션 환경에서는 인증서가 좋을 것이다. 이는 HTTP 서버가 아닌, 그래서

+0

이 유효 기간과는 너무 오래 시간이 제대로 설정하고 시도하십시오를 선택합니다. – pyus13

+0

사실 내 질문에, 지금 당장 서버에 액세스 할 수 없어 아무 것도 변경할 수 없습니다. 인증서에 관계없이 연결 만하면됩니다. – TheSquad

답변

0

어쩌면 인증서 확인을 무시해야합니다 org.apache.http.org.ssl 사용할 수 없습니다

경고 :이 코드는 안전하지

TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() { 
    public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
     return null; 
    } 

    @Override 
    public void checkClientTrusted(X509Certificate[] certs, String authType) { 
    } 

    @Override 
    public void checkServerTrusted(X509Certificate[] certs, String authType) { 
    } 
}}; 

// Install the all-trusting trust manager 
SSLContext sc = SSLContext.getInstance("SSL"); 
sc.init(null, trustAllCerts, new java.security.SecureRandom()); 

SSLSocketFactory sslsocketfactory = sc.getSocketFactory(); 
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("google.com", 443); 
... 

출처 : Using Java to connect with SSLSocket, trusting all certificates

관련 문제