升级使用 golang 1.15.0-rc.1 的系统 (kubernetes) 后,我被困在此错误消息上:
"x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0".
Run Code Online (Sandbox Code Playgroud)
我使用通用名称(我知道的)的唯一地方是我为我的服务生成私钥时openssl req -new -key certs/foo-bar.pem -subj "/CN=foobar.mydomain.svc" -out certs/foo-bar.csr -config certs/foo-bar_config.txt。
如何将此命令转换为使用 SAN?
我开发了一个 NewRequestWithCert 函数,该函数创建新的soap.client并使用证书文件中的证书,并且在soap.client.Do之后它返回x509:无法验证证书,因为它不包含任何IP SAN。我的代码有什么问题吗?
func (o *Client) NewRequestWithCert(urlLink string, requestData interface{}, responseData interface{}, certName string, host string) error {
// Keep on client
o.requestData = &requestData
o.responseData = &responseData
o.url = urlLink
certByte, errCert := ioutil.ReadFile("/app/certificates/" + certName)
if errCert != nil {
logrus.Errorf("cert err: %v", errCert)
return errCert
}
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(certByte)
logrus.Debug("certByte : ", certByte)
tlsConfig := &tls.Config{
ServerName: host,
ClientCAs: caCertPool,
ClientAuth: tls.RequireAndVerifyClientCert,
}
// New http client
o.client = &http.Client{
Timeout: 30 * time.Second,
Transport: …Run Code Online (Sandbox Code Playgroud)