Android,Golang和SSL

时间:2014-08-30 07:07:02

标签: android ssl go

这是我在Android应用上构建SSL套接字的代码片段。我有一个它试图连接的go服务器。我已经签署了证书,而不是自签名,但我仍然收到错误,

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代码,可能会在某处发光[/ p>]

  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)

坚持了几个星期。

由于

1 个答案:

答案 0 :(得分:0)

您的问题是糟糕的服务器,就像您尝试使用openssl s_client时所看到的那样。 有关如何修复服务器的类似问题的答案,请参阅golang SSL certification。就像我说的那样:根据文档,您必须将中间证书放入Certificates而不是RootCAsClientCAs