У меня есть вопрос, касающийся функции проверки 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?или эта библиотека будет работать как браузер, который вначале уже установил корневой сертификат, и вам не нужно ничего импортировать или делать.Если нет, то могу ли я сразу импортировать весь корневой сертификат из общедоступного центра сертификации?или я должен импортировать их один за другим вручную?
Большое спасибо за терпение при чтении моих вопросов, любые ответы или предложения очень ценятся!