¿Qué es una contraseña de desafío?

170

Estoy configurando SSL en un servidor Ubuntu. Uno de los campos que solicita como parte de la configuración de la CSR es una "contraseña de desafío". ¿Que es eso? El valor predeterminado es en blanco. ¿Necesito ingresar uno?

Will Martin
fuente

Respuestas:

152

La "contraseña de desafío" solicitada como parte de la generación de CSR es diferente de la frase de contraseña utilizada para cifrar la clave secreta ( solicitada en el momento de la generación de la clave, o cuando una clave de texto sin formato se encripta más tarde) y luego se solicita nuevamente cada vez que se habilita SSL se inicia el servicio que lo utiliza ).

Aquí se genera una clave y el comienzo de la clave generada:

$ openssl genpkey -algorithm rsa -out foo.key
............++++++
...++++++

$ head -3 foo.key
-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJ9jNAG4Noy//r/S
eeK/gEgGOV0BZm0CYmgSQGj4P6N3cJsPlGsG80qKTxTFwoEiXnM3BVeBpDdXhGKt

Esta clave no tiene frase de contraseña. No se me solicitó uno en la creación, y no he ingresado uno. Ahora, generemos una clave cifrada:

$ openssl genpkey -algorithm rsa -des3 -out bar.key
...........................................++++++
.....................................++++++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

$ head -3 bar.key
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQInfwj1iv3icMCAggA
MBQGCCqGSIb3DQMHBAizMHBklBexiwSCAoDtRKf1WtMiVMH7HraGTIG0rlQS6Xuj

Por lo tanto, debe quedar claro cómo una clave privada encriptada (que Apache, o cualquier otro servidor habilitado para SSL, necesitará desbloquear cuando se inicie) y una clave privada de texto sin formato (que no requiere desbloqueo al momento del inicio del servicio) . Ahora generaré una CSR con una contraseña de desafío a partir de la clave no cifrada :

$ openssl req -new -key foo.key
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:asdfasdf
An optional company name []:
-----BEGIN CERTIFICATE REQUEST-----
MIIBmzCCAQQCAQAwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0
eTEcMBoGA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEAn2M0Abg2jL/+v9J54r+ASAY5XQFmbQJiaBJAaPg/o3dwmw+U
awbzSopPFMXCgSJeczcFV4GkN1eEYq2Cmam3tH6t8mVDh0/UryJSWBsaFm9mh9RF
gIpP0hEkYZTf/0X+X06ukt9S/Id9Z/tVgPsZA3TcNjNhJfVaTm81/4ykq8UCAwEA
AaAZMBcGCSqGSIb3DQEJBzEKDAhhc2RmYXNkZjANBgkqhkiG9w0BAQUFAAOBgQCa
ivuDRBlHOhBjg6wPbH9NvCnvEnxeEAkYi0Sl/Grdo/WCk17e+sv9wgqEW1QSIdbV
XzMeWidurv4AtcATwhfk9tBcYBCTxANkTONzhJG7Yk9OAz8g8Ljo8EEvPf4oHqpw
tBg10DCD2op0lCwL2LBdPO3RG20f/HD6fEXPVxZdOQ==
-----END CERTIFICATE REQUEST-----

Y solo para mostrar que la clave no se ha cifrado mágicamente:

$ head -3 foo.key
-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJ9jNAG4Noy//r/S
eeK/gEgGOV0BZm0CYmgSQGj4P6N3cJsPlGsG80qKTxTFwoEiXnM3BVeBpDdXhGKt

Así que digo nuevamente: la "contraseña de desafío" solicitada como parte de la generación de CSR no es lo mismo que una frase de contraseña utilizada para cifrar la clave secreta. La "contraseña de desafío" es básicamente un nonce de secreto compartido entre usted y el emisor del certificado SSL (también conocido como Autoridad de Certificación o CA), incrustado en el CSR, que el emisor puede usar para autenticarlo en caso de que sea necesario. Algunos emisores de certificados SSL lo hacen más claro que otros; mirar hacia abajo en la parte inferior de esta página para ver donde se dice que se necesita la contraseña de desafío - es no al reiniciar Apache:

Si elige ingresar y utilizar una contraseña de desafío, deberá asegurarse de guardar esa contraseña en un lugar seguro. Si alguna vez necesita reinstalar su certificado por algún motivo, deberá ingresar esa contraseña.

MadHatter
fuente
2
¿Hay alguna diferencia entre un "Emisor SSL" y una CA (Autoridad de certificación)?
Jonathan
3
Técnicamente no están emitiendo el protocolo SSL en sí, sino un certificado compatible con SSL. Siento que el emisor de SSL es menos claro. El Emisor de certificados SSL sería claro, en mi humilde opinión.
Jonathan
66
Respuesta muy (muy) completa, cuando no era necesario en mi humilde opinión. En función de la pregunta formulada, puede eliminar todas sus respuestas, excepto que después de 'La "contraseña de desafío" es básicamente un nonce de secreto compartido ...'. Creo que eso habría respondido a la pregunta formulada de la misma manera, con menos distracción de información no pertinente.
Joe
3
@joe gracias! Lo que no puede ver (porque no tiene el representante) es que estaba respondiendo a una respuesta anterior eliminada desde entonces por un usuario muy calificado (que en este caso, lamentablemente, estaba equivocado), así que tuve que hacerlo una refutación punto por punto. Su posterior eliminación, que no fue realizada por su autor, hace que el mío se vea un poco extraño, pero hasta ahora he optado por dejarlo en pie. Si suficientes otros apoyan tu punto de vista votando tu comentario, enmendaré mi respuesta.
MadHatter
3
Estaba muy desconcertado por esta misma pregunta, y encontré esta respuesta no tan útil para mi comprensión limitada del tema (debido a la forma en que está escrita), pero afortunadamente encontré mi respuesta en security.stackexchange.com/a/77082/67048
zagrimsan