下面是我在 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.Request
有TLS *tls.ConnectionState
场,而PeerCertificates []*x509.Certificate
场又是场,所以
fmt.Fprint(w, r.TLS.PeerCertificates)
大概可以做
- 1 回答
- 0 关注
- 243 浏览
添加回答
举报
0/150
提交
取消