Che cos'è una password sfida?


170

Sto configurando SSL su un server Ubuntu. Uno dei campi richiesti come parte dell'impostazione del CSR è una "password di verifica". Cos'è quello? L'impostazione predefinita è vuota. Devo inserirne uno?

Risposte:


152

La "password di verifica" richiesta come parte della generazione CSR, è diversa dalla passphrase utilizzata per crittografare la chiave segreta ( richiesta al momento della generazione della chiave o quando una chiave di testo in chiaro viene successivamente crittografata) e quindi richiesta nuovamente ogni volta che è abilitato SSL servizio che lo utilizza si avvia ).

Ecco una chiave generata e l'inizio della chiave generata:

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

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

Questa chiave non ha passphrase. Non mi è stato richiesto per uno alla creazione e non ne ho inserito uno. Ora generiamo una chiave crittografata:

$ 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

Quindi dovrebbe essere chiaro quale aspetto di una chiave privata crittografata (quale apache, o qualsiasi altro server abilitato per SSL, avrà bisogno di sbloccarsi all'avvio) e una chiave privata in chiaro (che non richiede lo sblocco all'avvio del servizio) . Ora genererò un CSR con una password di verifica dalla chiave non crittografata :

$ 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-----

E solo per dimostrare che la chiave non è stata magicamente crittografata:

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

Quindi ripeto: la "password di verifica" richiesta come parte della generazione CSR non è la stessa cosa di una passphrase utilizzata per crittografare la chiave segreta. La "password di prova" è fondamentalmente un nonce condiviso-segreto tra l'utente e l'emittente del certificato SSL (noto anche come autorità di certificazione o CA), incorporato nel CSR, che l'emittente può utilizzare per autenticare l'utente qualora fosse necessario. Alcuni emittenti di certificati SSL lo rendono più chiaro di altri; guarda in fondo a questa pagina per vedere dove dicono che è necessaria la password sfida - non è quando riavvii apache:

Se si sceglie di inserire e utilizzare una password di verifica, è necessario assicurarsi di salvare la password in un luogo sicuro. Se dovessi mai reinstallare il certificato per qualsiasi motivo, ti verrà richiesto di inserire quella password.


2
Esiste una differenza tra un "emittente SSL" e una CA (autorità di certificazione)?
Jonathan,

3
Tecnicamente non stanno emettendo il protocollo SSL stesso, ma piuttosto un certificato compatibile SSL. Mi sembra che l'emittente SSL sia meno chiaro. L'emittente del certificato SSL sarebbe chiaro, a mio modesto parere.
Jonathan,

6
Risposta molto (molto) completa, quando uno non era necessario IMHO. In base alla domanda posta, potresti eliminare tutta la tua risposta, tranne che seguire "La password della sfida" è fondamentalmente un nonce condiviso-segreto ... '. Credo che avrebbe risposto alla domanda posta in modo altrettanto completo, con informazioni non pertinenti meno distraenti.
joe

3
@joe grazie! Quello che non puoi vedere (perché non hai il rappresentante) è che stavo rispondendo a una risposta precedentemente cancellata da un utente molto valutato (che in questo caso, purtroppo, era sbagliato), quindi ho dovuto fare una confutazione punto per punto. La sua successiva cancellazione, che non è stata fatta dal suo autore, fa sembrare la mia un po 'strana, ma fino ad ora ho scelto di lasciarla stare. Se abbastanza altri supportano il tuo punto di vista votando il tuo commento, modificherò la mia risposta.
MadHatter il

3
Sono stato sconcertato da questa stessa domanda e ho trovato questa risposta non molto utile per la mia comprensione limitata dell'argomento (a causa del modo in cui è scritta), ma fortunatamente ho trovato la mia risposta da security.stackexchange.com/a/77082/67048
Zagrimsan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.