Сертификаты в Go

Содержание
Введение
Генерация pem
Похожие статьи

Введение

Обычно сертификаты генерируются с помощью инструментов вроде OpenSSL.

У этого способа есть ограничения, связанные с возможностью инструментов. Обойти их можно создав сертификат программно, например на Go.

Создать сертификат

Если нужно сгенерировать сертификат с определёнными значениям NotBefore и NotAfter

package main import ( "bytes" "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "io/ioutil" "math/big" "time" ) func main() { template := x509.Certificate{ SerialNumber: big.NewInt(time.Now().Unix()), Subject: pkix.Name{Organization: []string{"localhost"}}, NotBefore: time.Now().AddDate(1, 0, 1), NotAfter: time.Now().AddDate(2, 1, 0), KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, DNSNames: []string{"localhost"}, } privatekey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { panic(err) } crt, err := x509.CreateCertificate(rand.Reader, &template, &template, &privatekey.PublicKey, privatekey) if err != nil { panic(err) } var certOut, keyOut bytes.Buffer pem.Encode(&certOut, &pem.Block{Type: "CERTIFICATE", Bytes: crt}) pem.Encode(&keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(privatekey)}) ioutil.WriteFile("/tmp/key", keyOut.Bytes(), 0644) ioutil.WriteFile("/tmp/pem", certOut.Bytes(), 0644) }

Похожие статьи
Программирование на Go
Объявление переменных
Определить тип переменной
Указатели
Константы
Сертификаты
Запросы к REST API на Go
Установка в Linux

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: