2014-08-30 70 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