Получение ошибки «Сертификат действителен для ServerCommonName, а не ClientCommonName» - PullRequest
1 голос
/ 24 апреля 2019

Я пытаюсь выполнить TLS-аутентификацию на удаленном сервере.Этот сервер настроен с двумя сертификатами (один корневой и один свой).Локально у меня такой же корневой сертификат.Я делаю рукопожатие TLS (для проверки этого сервера можно доверять) путем создания клиента локально.Однако при этом я получаю ошибку: x509: Certificate is valid for ServerCommonName, not ClientCommonName.Когда я пытаюсь проверить сертификаты, представленные сервером, в идеале цепочка сертификатов сервера должна иметь корневой сертификат, которому я доверяю, и это нормально.Не в состоянии понять, почему возникает именно эта ошибка.

Может кто-нибудь помочь?Ниже приведен код ...

func CheckTLSendpoint() error {
    getDecoded()
    var tlsConfig tls.Config
    cer, _ := tls.X509KeyPair(ClientCertPem, ClientKeyPem)

    // Checking verification of server certificate by the client is required or not
    rootCA := x509.NewCertPool()
    rootCA.AppendCertsFromPEM(RootCaPEM)

    tlsConfig = tls.Config{
        RootCAs:            rootCA,
        Certificates:       []tls.Certificate{cer},
        ServerName:         "ClientCommonName", //this is common name of my client certificate
    }
    tlsConfig.BuildNameToCertificate()

    rAddr := "10.20.30.40:3325"

    conn, err := net.DialTimeout("tcp", rAddr, 10*time.Second)
    defer conn.Close()

    if err != nil {
        return fmt.Errorf("TCP connection error : %s", err.Error())
    }

    c := tls.Client(conn, &tlsConfig)
    defer c.Close()

    err = c.Handshake()
    if err != nil {
        return fmt.Errorf("TLS connection error :  %s", err.Error())
    }

    return nil
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...