Проверка сертификата клиента, выданного общедоступным центром сертификации - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть вопрос, касающийся функции проверки x509

в соответствии с этим примером: https://golang.org/src/crypto/x509/example_test.go

    const rootPEM = `-----BEGIN CERTIFICATE-----
                     too long... skipped
                     -----END CERTIFICATE-----`

    const certPEM = `-----BEGIN CERTIFICATE-----
                     too long... skipped
                     -----END CERTIFICATE-----`

    roots := x509.NewCertPool()
    ok := roots.AppendCertsFromPEM([]byte(rootPEM))
    if !ok {
        panic("failed to parse root certificate")
    }

    block, _ := pem.Decode([]byte(certPEM))
    if block == nil {
        panic("failed to parse certificate PEM")
    }
    cert, err := x509.ParseCertificate(block.Bytes)
    if err != nil {
        panic("failed to parse certificate: " + err.Error())
    }

    opts := x509.VerifyOptions{
        DNSName: "mail.google.com",
        Roots:   roots,
    }

    if _, err := cert.Verify(opts); err != nil {
        panic("failed to verify certificate: " + err.Error())
    }

мы можем проверить сертификат клиента, используя корневой сертификат от CA, подписавшегоЭто.Но я предполагаю, что в этом примере используется самоподписанный сертификат, поскольку он должен предоставить корневой сертификат, сгенерированный мной для распознавания сертификата.

Но что, если сертификат клиента подписан общедоступным сертификатом?авторитет как у Годадди или Symantec?

Нужно ли мне заранее предоставлять корневой сертификат в NewCertPool?или эта библиотека будет работать как браузер, который вначале уже установил корневой сертификат, и вам не нужно ничего импортировать или делать.Если нет, то могу ли я сразу импортировать весь корневой сертификат из общедоступного центра сертификации?или я должен импортировать их один за другим вручную?

Большое спасибо за терпение при чтении моих вопросов, любые ответы или предложения очень ценятся!

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