我正在与为我提供证书的银行服务器集成。我pem用证书创建了一个文件,所以现在我有了证书、文件中的私钥pem和密钥的密码短语。
新生成的文件pem正在使用 OpenSSL 命令建立 SSL 连接,如下所示:
openssl s_client -connect host:port -key key.pem -cert cert.pem
此命令请求密码,我可以连接。但是我无法使用我的 Go 代码连接到相同的代码,它看起来像这样:
package main
import (
"crypto/tls"
"crypto/x509"
"fmt"
"net/http"
)
func main() {
caCert := []byte(`certs pem data`) // this contains both private key and certificates
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(caCert)
// Setup HTTPS client
tlsConfig := &tls.Config{
RootCAs: caCertPool,
InsecureSkipVerify: true,
}
tlsConfig.BuildNameToCertificate()
transport := &http.Transport{TLSClientConfig: tlsConfig}
client := &http.Client{Transport: transport}
httpRequest, _ := http.NewRequest("GET", "https://test.com", nil)
resp, err := client.Do(httpRequest)
fmt.Printf("resp: [%v] \n Error: [%v]", resp, err)
}
我也不确定在我的 HTTP 请求中在哪里添加密码。
我得到的错误:remote error: tls: bad certificate
大话西游666
相关分类