Как получить строку из открытого ключа сертификата x509 в go? - PullRequest
1 голос
/ 10 мая 2019

Если у меня есть объект *x509.Certificate, как мне извлечь из него строковое представление base64 с открытым ключом?

1 Ответ

2 голосов
/ 10 мая 2019

ПРИМЕЧАНИЕ. Перейдите к # 3 , если у вас уже есть объект x509.Certificate.


Вам нужно будет сделать следующее:

  1. Расшифруйте PEM с помощью pem.Decode().
block, _ := pem.Decode([]byte(certPEM))
  1. Разобрать сертификат с x509.ParseCertificate().
cert, _ := x509.ParseCertificate(block.Bytes)
  1. Маршал Публичный ключ с x509.MarshalPKIXPublicKey().
publicKeyDer, _ := x509.MarshalPKIXPublicKey(cert.PublicKey)
  1. Закодируйте его в PEM-кодированную структуру с помощью pem.EncodeToMemory().
publicKeyBlock := pem.Block{
    Type:  "PUBLIC KEY",
    Bytes: publicKeyDer,
}
publicKeyPem := string(pem.EncodeToMemory(&publicKeyBlock))

Запустите его на Игровая площадка Go


Результат можно подтвердить, если скопировать сертификат в примере в файл cert.pem с помощью команды:

openssl x509 -inform pem -in cert.pem -pubkey -noout

Вы должны получить тот же результат!

...