Я использую x/crypto/pkcs12 для загрузки форматированного файла * .p12 в формате DER. Существует an example in the documentation, который использует tls.X509KeyPair
, чтобы сделать tls.Certificate
, который может использоваться для HTTP-клиента.Как превратить x509.Certificate в tls.Certificate в Go?
Это прекрасно, и отлично работает. Но тогда я также хочу проверить, что сертификат не истек. Библиотека pkcs12
также имеет Decode function, которая возвращает сертификат x509, который я могу использовать, используя метод Verify. Это также отлично работает.
Мне кажется странным, что я дважды декодирую DER. Один раз для x509.Certificate
, чтобы проверить, и снова, чтобы получить tls.Certificate
. Я не знаю отношений между этими двумя структурами сертификатов, но, видя, что в пакете tls есть функция с именем tls.X509KeyPair, которая занимает несколько байтов, не должно быть очевидного способа получить tls.Certificate из x509. Сертификат или наоборот? Что мне не хватает?
Thanks Matt. Я попробую. Нужно ли мне что-либо делать с другими полями tls.Certificate или вызвать какие-либо функции, или же «просто работать»? Я заметил, что x509.Certificate.Verify() также возвращает цепочки. – nathany
Для серверов TLS потребуется поле 'PrivateKey' для успешного завершения рукопожатия. Я думаю, что остальное необязательно. – Matt
Похоже, мне нужен PrivateKey для клиентов. Вглядываясь в него. tls: закрытый ключ клиента сертификата типа не реализует crypto.Signer –
nathany