Crear X509Certificate2 con clave pública en .Net Core
Quiero cifrar un token usando jwe
de acuerdo a este artículo, en el artículo él creó el
X509EncryptingCredentials
así:
var tokenDescriptor = new SecurityTokenDescriptor
{
Audience = "you",
Issuer = "me",
Subject = new ClaimsIdentity(new List<Claim> {new Claim("sub", "scott")}),
EncryptingCredentials = new X509EncryptingCredentials(new X509Certificate2("key_public.cer")) //aquí quiero decir
};
Para ello, él creó un new X509Certificate2("key_public.cer")
¿Cómo puedo crear key_public.cer
para poder pasarlo a X509Certificate2
?
davy.ai
Para crear un certificado de clave pública (
key_public.cer
) que se utilizará conX509EncryptingCredentials
, primero deberá generar una clave privada, luego utilizarla para generar una solicitud de firma de certificado (CSR) y finalmente hacer que esa CSR sea firmada por una autoridad de certificación (CA) para obtener el certificado de clave pública.Aquí están los pasos básicos a seguir:
Esto generará una clave privada y la encriptará con el algoritmo AES-256. Se le pedirá que ingrese una contraseña para la clave.
Genere una solicitud de firma de certificado (CSR) utilizando la clave privada. Por ejemplo, utilizando OpenSSL:
Esto generará un archivo CSR (
csr.pem
) que contiene la clave pública y alguna información de identificación (por ejemplo, nombre, organización) que se utilizará para firmar el certificado.Envíe la CSR a una autoridad de certificación (CA) para obtener el certificado de clave pública. Hay muchas CAs comerciales y gratuitas disponibles, como DigiCert, Let’s Encrypt y Comodo. Siga sus instrucciones para enviar la CSR y obtener el certificado.
Una vez que tenga el certificado, guárdelo como
key_public.cer
y úselo en el código como se muestra en el artículo:Tenga en cuenta que
key_public.cer
debe estar en el formato de certificado X.509, que normalmente se codifica en Base64 y tiene la extensión.cer
.