为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 中访问客户端的证书?

如何在 Go 中访问客户端的证书?

Go
鸿蒙传说 2021-09-10 21:04:36
下面是我在 Go 中的 HTTPS 服务器代码。服务器要求客户端提供 SSL 证书,但不验证证书(按设计)。如果您想尝试一下,可以按如下方式生成私钥/公钥对:$ openssl genrsa -out private.pem 2048$ openssl req -new -x509 -key private.pem -out public.pem -days 365有谁知道我如何在处理程序中访问客户端证书?假设我想报告有关客户端提交给客户端的证书的一些属性。谢谢,克里斯。package mainimport (    "fmt"    "crypto/tls"    "net/http")const (    PORT       = ":8443"    PRIV_KEY   = "./private.pem"    PUBLIC_KEY = "./public.pem")func rootHandler(w http.ResponseWriter, r *http.Request) {    fmt.Fprint(w, "Nobody should read this.")}func main() {    server := &http.Server{        TLSConfig: &tls.Config{            ClientAuth: tls.RequireAnyClientCert,            MinVersion: tls.VersionTLS12,        },        Addr: "127.0.0.1:8443",    }    http.HandleFunc("/", rootHandler)    err := server.ListenAndServeTLS(PUBLIC_KEY, PRIV_KEY)    if err != nil {        fmt.Printf("main(): %s\n", err)    }}
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

似乎r *http.RequestTLS *tls.ConnectionState场,而PeerCertificates []*x509.Certificate场又是场,所以

fmt.Fprint(w, r.TLS.PeerCertificates)

大概可以做



查看完整回答
反对 回复 2021-09-10
  • 1 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信