1 回答

TA貢獻2012條經驗 獲得超12個贊
即我需要在加載客戶端證書結構后對其進行修改。這需要解碼 PEM 并解析出證書。對于 API Gateway 客戶端證書,我必須將BasicConstraintsValidand設置IsCA為 true 和KeyUsageto KeyUsageCertSign; 對于我本地生成的證書,我只需要后兩個。enableClientAuth()在我的問題中修改func:
func enableClientAuth(server *http.Server, clientCertFile string) error {
pemBytes, err := ioutil.ReadFile(clientCertFile)
if err != nil {
return err
}
pemBlock, _ := pem.Decode(pemBytes)
clientCert, err := x509.ParseCertificate(pemBlock.Bytes)
if err != nil {
return err
}
clientCert.BasicConstraintsValid = true
clientCert.IsCA = true
clientCert.KeyUsage = x509.KeyUsageCertSign
caCertPool := x509.NewCertPool()
caCertPool.AddCert(clientCert)
tlsConfig := &tls.Config{
ClientAuth: tls.RequireAndVerifyClientCert,
ClientCAs: caCertPool,
}
tlsConfig.BuildNameToCertificate()
server.TLSConfig = tlsConfig
return nil
}
- 1 回答
- 0 關注
- 330 瀏覽
添加回答
舉報