identityserver3 - microsoft - ¿Cómo generaría el certificado de firma de Identity Server?
identity server 5 (4)
Aquí es cómo lo carga desde una huella digital en mi configuración: Haga clic aquí para ver la imagen
En los ejemplos de servidores de identidad encontramos códigos como este en Startup.cs
var certFile = env.ApplicationBasePath + "//idsrv3test.pfx";
var signingCertificate = new X509Certificate2(certFile, "idsrv3test");
¿Cómo haría para reemplazar esto en escenarios de producción?
Obtenga un certificado dedicado, ya sea a través de su PKI o autogenerado:
http://brockallen.com/2015/06/01/makecert-and-creating-ssl-or-signing-certificates/
Importe el par de claves al almacén de certificados de Windows y cárguelo desde allí en tiempo de ejecución.
Para aumentar la seguridad, algunas personas implementan las claves en un dispositivo dedicado (llamado HSM) o en una máquina dedicada (por ejemplo, detrás de un firewall). El ITokenSigningService
permite mover la firma de token real a esa máquina separada.
Para el registro, el código propuesto en la imagen publicada por RuSs:
options.SigningCertificate = LoadCertificate();
public X509Certificate2 LoadCertificate()
{
string thumbPrint = "104A19DB7AEA7B438F553461D8155C65BBD6E2C0";
// Starting with the .NET Framework 4.6, X509Store implements IDisposable.
// On older .NET, store.Close should be called.
using (var store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
store.Open(OpenFlags.ReadOnly);
var certCollection = store.Certificates.Find(X509FindType.FindByThumbprint, thumbPrint, validOnly: false);
if (certCollection.Count == 0)
throw new Exception("No certificate found containing the specified thumbprint.");
return certCollection[0];
}
}
Recientemente decidí renovar mi proceso de emisión de firma de tokens. Si está ejecutando Windows 10, puede usar el impresionante cmdlet powershell llamado New-SelfSignedCertificate .
Aquí está mi ejemplo de uso:
New-SelfSignedCertificate -Type Custom
-Subject "CN=TokenSigningForIdServer"
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3")
-KeyUsage DigitalSignature
-KeyAlgorithm RSA
-KeyLength 2048
-CertStoreLocation "Cert:/LocalMachine/My"
Asegúrese de que está ejecutando el comando como administrador. Puede obtener los detalles del certificado abriendo certlm.msc . Debe almacenarse debajo de Personal / Certificados.
La mayoría de las banderas deben ser obvias, aparte de la -TextExtention. Especifica que un campo de Uso de clave mejorado se establece en el valor de "Firma de código". Puede jugar con el algoritmo utilizado, la longitud de la clave e incluso agregar extensiones consultando la siguiente página de documentation .