Crie pares de chaves assimétricas

Este guia demonstra como criar pares de chaves assimétricos para a RFC de multimédia.

Gere chaves

Linha de comandos

Pode gerar uma chave privada e uma chave pública através do Python 3 e do OpenSSL 1.1.1 ou posterior (as versões anteriores do OpenSSL não suportam o Ed25519).

  1. Gere a chave privada.

    openssl genpkey -algorithm ed25519 -outform PEM -out test.private.key
    

    Esta ação gera uma chave privada codificada em PEM. Mantenha esta chave segura, idealmente através de um sistema de gestão de chaves ou do Secret Manager.

  2. Gere a chave pública a partir da chave privada no formato Base64 seguro para URL.

    openssl pkey -outform DER -pubout -in test.private.key | tail -c +13 | python3 -c "import base64, sys; print(('%s' % base64.urlsafe_b64encode(sys.stdin.buffer.read()))[2:-1])"
    

    Este comando gera a chave pública a partir da chave privada, removendo as informações do cabeçalho ASN.1 da chave pública não processada.

Python

import base64

from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import ed25519


def generate_ed25519_keypair(
    private_key_filename: str = "private.key", public_key_filename: str = "public.pub"
) -> None:
    """Generate Ed25519 Keys Pairs.

    Args:
        private_key_filename(default private.key): private key filename as a string.
        public_key_filename(default public.pub): public key filename as a string

    Returns:

    """
    private_key = ed25519.Ed25519PrivateKey.generate()
    public_key = private_key.public_key()

    private_key_str = private_key.private_bytes(
        encoding=serialization.Encoding.