我想向浏览器申请证书以获得身份验证的成员.
在nodejs中我们有类似http://nategood.com/nodejs-ssl-client-cert-auth-api-rest的内容
我已经阅读了一些关于tls的文章,但我真的不明白如何使用它...
Elw*_*nar 12
以下是如何要求客户端证书的简短示例.诀窍是手动创建和配置http.Server
而不是使用实用例程.
package main
import (
"crypto/tls"
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello cert")
})
server := &http.Server{
Addr: ":8090",
TLSConfig: &tls.Config{
ClientAuth: tls.RequireAndVerifyClientCert,
},
}
server.ListenAndServeTLS("cert.pem", "cert.key")
}
Run Code Online (Sandbox Code Playgroud)
重要的部分是tls.Config
结构,它控制服务器使用TLS的行为方式.ClientAuth字段包含客户端证书策略,在我们的示例中需要客户端证书并进行验证.请注意,其他政策可用...
您还应该查看ClientCAs
同一结构的字段,该字段允许您使用客户端必须验证的根CA列表.
注意:我假设您还使用证书服务器端来加密通信.该server.ListenAndServeTLS
方法仍然为您做了很多工作作为副作用.如果您不需要它,您将不得不深入研究这种方法来手动完成(并使用偶数级别的方法server.Serve
).