带有自签名证书的TLS

我正在尝试使用自签名服务器证书建立TLS连接。

我使用以下示例代码生成了证书:http :

//golang.org/src/pkg/crypto/tls/generate_cert.go

我相关的客户端代码如下所示:

// server cert is self signed -> server_cert == ca_cert

CA_Pool := x509.NewCertPool()

severCert, err := ioutil.ReadFile("./cert.pem")

if err != nil {

log.Fatal("Could not load server certificate!")

}

CA_Pool.AppendCertsFromPEM(severCert)

config := tls.Config{RootCAs: CA_Pool}

conn, err := tls.Dial("tcp", "127.0.0.1:8000", &config)

if err != nil {

log.Fatalf("client: dial: %s", err)

}

以及类似的服务器代码:

cert, err := tls.LoadX509KeyPair("./cert.pem", "./key.pem")

config := tls.Config{Certificates: []tls.Certificate{cert}}

listener, err := tls.Listen("tcp", "127.0.0.1:8000", &config)

for {

conn, err := listener.Accept()

if err != nil {

log.Printf("server: accept: %s", err)

break

}

log.Printf("server: accepted from %s", conn.RemoteAddr())

go handleConnection(conn)

}

因为服务器证书是自签名的,所以对于服务器和客户端CA_Pool使用相同的证书,但这似乎不起作用,因为我总是会收到此错误:

client: dial: x509: certificate signed by unknown authority 

(possibly because of "x509: invalid signature: parent certificate

cannot sign this kind of certificate" while trying to verify

candidate authority certificate "serial:0")

我怎么了

回答:

最终它可以与内置在x509.CreateCertificate中的go一起使用,问题是 ,

,使创建自签名证书有效,但在验证证书链时崩溃了。

以上是 带有自签名证书的TLS 的全部内容, 来源链接: utcz.com/qa/411900.html

回到顶部