es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtención de la firma de un certificado (.cer)

Intento crear una afirmación de cliente según se describe en aquí.

En la tercera parte de este documento (Firma), no sé cómo obtener la firma del certificado como se solicita en el documento. Mi certificado es un archivo .cer en mi computadora que creé así:

$cert = New-SelfSignedCertificate -Subject "CN=Certiftest" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
Export-Certificate -cert $cert -FilePath "path\Certiftest.cer"

Para obtener la firma, intenté:

openssl x509 -inform der -in "path\Certiftest.cer" -text -noout -certopt ca_default -certopt no_validity -certopt no_serial -certopt no_subject -certopt no_extensions -certopt no_signame

Pero la firma no tiene el mismo formato que en el documento.

Lo que obtuve:

Signature Algorithm: sha256WithRSAEncryption
         58:4c:52:d1:43:d4:5s:c1:56:bf:be:08:1b:29:ab:68:19:43:
         41:b6:91:0e:fe:46:39:35:46:e6:3b:6a:e7:80:7f:6a:7d:b5:
         9f:ce:0d:ff:17:26:e9:9f:a3:48:91:15:19:96:eb:c2:e3:36:
         64:3f:19:7c:cd:c4:e9:9f:a3:48:91:15:19:96:eb:c2:e3:36:
         cb:ce:f3:8f:fa:75:f5:d8:33:1f:e5:a6:e0:ff:22:b8:da:e0:
         *****************************************************
         53:85:74:35:e1:e6:bf:3e:e4:58:44:29:05:86:3b:6b:58:b9:
         1e:1f:0e:bc:35:4b:7d:ee:1f:ff:34:bc:5e:e5:3b:6b:58:b9:
         d2:b5:d4:a3

Lo que obtienen en el documento:

"Gh95kHCOEGq5E_ArMBbDXhwKR577scxYaoJ1P{muchos caracteres aquí}KKJDEg"

Gracias,
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la firma de certificado en el formato requerido, puede utilizar el siguiente comando de PowerShell:

    $cert = Get-PfxCertificate -FilePath "path\Certiftest.cer"
    $base64Signature = [Convert]::ToBase64String($cert.GetCertHash())
    

    Esto recuperará el archivo de certificado, obtendrá la firma del hash del certificado y lo convertirá al formato base64. La variable resultante $base64Signature se puede utilizar para crear la aserción del cliente tal como se describe en el documento mencionado.

Comments are closed.