2014-08-30 95 views
1

下面是我的代碼片段,用於在我的android應用程序中構建SSL套接字。我有一個正試圖連接到的服務器。我已簽署的證書,而不是自簽名的,但我仍然收到錯誤,Android,Golang和SSL

trust anchor for certification path not found. android

 SSLSocketFactory f = (SSLSocketFactory) SSLSocketFactory.getDefault(); 

     try { 
      SSLSocket socket = (SSLSocket) f.createSocket(ip, port); 
      socket.startHandshake(); 

所以,我想不通,如果是因爲我的服務器沒有被正確或Android應用程序。我已經閱讀了關於這個錯誤的主要android網站,但它並沒有真正幫助我。

這裏是Go代碼,可能會提供一些線索某處

cert, err := tls.LoadX509KeyPair("mycert_com.crt", "key.pem") 
    checkError(err)               

    rootCert, err := ioutil.ReadFile("AddTrustExternalCARoot.crt") 
    checkError(err)               
    trustCert, err := ioutil.ReadFile("COMODORSAAddTrustCA.crt")   
    checkError(err)               
    validationCert, err := ioutil.ReadFile("COMODORSADomainValidationSecureServerCA.crt") 
    checkError(err)               

    certs := x509.NewCertPool()             
    certs.AppendCertsFromPEM(rootCert)            
    clientCerts := x509.NewCertPool()            
    clientCerts.AppendCertsFromPEM(trustCert)          
    clientCerts.AppendCertsFromPEM(validationCert)         

    sslConfig := tls.Config{RootCAs: certs, ClientCAs: clientCerts, Certificates: []tls.Certificate{cert}}             

    listener, err := tls.Listen("tcp", service, &sslConfig) 

一直停留在這幾個星期。

感謝

回答

0

你的問題是不好的服務器,當你與openssl s_client嘗試,你會看到的。 有關如何修復服務器的類似問題的答案,請參閱golang SSL certification。就像我在那裏說的那樣:根據文件,您必須將中間證書放入Certificates而不是RootCAsClientCAs