2
以下是我在Go中使用HTTPS服務器的代碼。服務器要求客戶端提供SSL證書,但不會驗證證書(按設計)。如何在Go中訪問客戶端的證書?
您可以生成公鑰/私鑰對,如下,如果你想給它一個嘗試:
$ openssl genrsa -out private.pem 2048
$ openssl req -new -x509 -key private.pem -out public.pem -days 365
有誰知道我可以在處理程序訪問客戶端證書?假設我想報告一些關於客戶呈現給客戶的證書的屬性。
謝謝, 克里斯。
package main
import (
"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)
}
}
非常感謝,認爲沒有的伎倆! – chrisvdb