Crea coppie di chiavi asimmetriche

Questa guida illustra come creare coppie di chiavi asimmetriche per Media CDN.

Genera chiavi

Riga di comando

Puoi generare una chiave privata e pubblica utilizzando Python 3 e OpenSSL 1.1.1 o versioni successive (le versioni precedenti di OpenSSL non supportano Ed25519).

  1. Genera la chiave privata.

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

    Questa azione restituisce una chiave privata con codifica PEM. Tieni al sicuro questa chiave, idealmente utilizzando un sistema di gestione delle chiavi o Secret Manager.

  2. Genera la chiave pubblica dalla chiave privata in formato base64 con protezione dell'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])"
    

    Questo comando genera la chiave pubblica dalla chiave privata, eliminando le informazioni di intestazione ASN.1 dalla chiave pubblica non elaborata.

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.Raw,
        format=serialization.PrivateFormat.Raw,
        encryption_algorithm=serialization.NoEncryption(),
    )
    print("Private Key:\t", base64.urlsafe_b64encode(private_key_str))

    public_key_str = public_key.public_bytes(
        encoding=serialization.Encoding.Raw, format=serialization.PublicFormat.Raw
    )
    print("Public Key:\t", base64.urlsafe_b64encode(public_key_str))

    with open(private_key_filename, "wb") as fp:
        fp.write(base64.urlsafe_b64encode(private_key_str))
        print(f"Private Key is written to:\t{private_key_filename}")

    with open(public_key_filename, "wb") as fp:
        fp.write(base64.urlsafe_b64encode(public_key_str))
        print(f"Public Key is written to:\t{public_key_filename}")

Con la chiave in questo formato, ora puoi aggiungerla a un set di chiavi. Quando il set di chiavi è associato a una route cdnPolicy.signedRequestKeyset, Media CDN verifica che le richieste siano state firmate prima di pubblicare i contenuti.