Свой CA

Что: 8bd5b5b9f5b8afcf94ce4a56d319237c36cbc141

Когда: 2020-11-24 20:43:16+03:00

Темы: crypto dns tip

Свой CA

В Паутине тьма примеров как сваять свой CA на основе OpenSSL команд. Я
считаю OpenSSL команды чистым садизмом и издевательством над человеком.
Как и код их библиотеки и документации. Привожу пример как можно сделать
свой CA на certtool из GnuTLS-а:



    $ certtool --generate-privkey --bits 512 --ecc --outfile ca.example.com.key.pem


  файл, но очень простого формата:

    $ cat > ca.example.com.tmpl <<EOF
    dn = "cn=ca.example.com"
    serial = 1
    expiration_days = 3650
    ca
    cert_signing_key
    EOF

  где указывается только самое базовое (DN/CN/serial, срок годности, то
  что это CA, который может подписывать сертификаты)



    $ certtool \
        --generate-self-signed \
        --load-privkey ca.example.com.key.pem \
        --template ca.example.com.tmpl \
        --outfile ca.example.com.pem


  Генерируем ключ:

    $ certtool --generate-privkey --bits 256 --ecc --outfile $domain.key.pem



    $ cat > $domain.tmpl <<EOF
    dn = "cn=$domain"
    expiration_days = 365
    signing_key
    dns_name = "$domain"
    EOF

  dns_name добавляется subjectAltName расширение, которое обязательно
  например для Go x509 модуля. Не помешает



    $ certtool \
        --load-ca-certificate ca.example.com.pem \
        --load-ca-privkey ca.example.com.key.pem \
        --generate-certificate \
        --load-privkey $domain.key.pem \
        --template $domain.tmpl \
        --outfile $domain.pem

Этого достаточно чтобы софт с выпущенными сертификатами работал. Почему
ECC (ECDSA)? Потому что компактно, быстро, эффективно. На помойку тех
кто умеет только RSA. Я бы конечно предпочёл EdDSA, но это точно далеко
не всеми поддерживается.

оставить комментарий

Сгенерирован: SGBlog 0.34.0