Co to jest hasło wyzwania?

170

Konfiguruję SSL na serwerze Ubuntu. Jednym z pól, o które prosi w ramach konfigurowania CSR, jest „hasło wyzwania”. Co to jest? Wartość domyślna jest pusta. Czy muszę wprowadzić jeden?

Will Martin
źródło

Odpowiedzi:

152

„Hasło wyzwania” wymagane w ramach generowania CSR różni się od hasła używanego do szyfrowania tajnego klucza ( wymaganego podczas generowania klucza lub gdy klucz jawny jest później szyfrowany - a następnie żądany ponownie za każdym razem, gdy włączono obsługę SSL usługa, która go używa, uruchamia się ).

Oto generowany klucz i początek generowanego klucza:

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

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

Ten klucz nie ma hasła. Nie zostałem poproszony o utworzenie go i nie podałem go. Teraz wygenerujmy zaszyfrowany klucz:

$ 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

Powinno więc być jasne, jak wygląda zaszyfrowany klucz prywatny (który apache lub inny serwer z obsługą SSL będzie wymagał odblokowania, gdy się uruchomi) oraz klucz prywatny w postaci zwykłego tekstu (który nie wymaga odblokowania w momencie rozpoczęcia usługi) . Teraz wygeneruję CSR z hasłem wyzwania z niezaszyfrowanego klucza:

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

I tylko, aby pokazać, że klucz nie został magicznie zaszyfrowany:

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

Powtarzam więc: „hasło wyzwania” wymagane w ramach generowania CSR to nie to samo, co hasło używane do szyfrowania tajnego klucza. „Hasło wyzwania” to w zasadzie wspólna tajemnica między tobą a wystawcą certyfikatu SSL (zwanym także urzędem certyfikacji lub urzędem certyfikacji), osadzonym w CSR, którego wystawca może użyć do uwierzytelnienia, jeśli zajdzie taka potrzeba. Niektórzy wystawcy certyfikatów SSL sprawiają, że jest to jaśniejsze niż inne; spójrz w dół na dole tej strony, aby zobaczyć, gdzie mówią, że hasło wyzwania jest potrzebne - nie jest to po ponownym uruchomieniu apache:

Jeśli zdecydujesz się wprowadzić hasło dostępu i użyć go, musisz upewnić się, że hasło zostało zapisane w bezpiecznym miejscu. Jeśli z jakiegokolwiek powodu będziesz musiał ponownie zainstalować certyfikat, konieczne będzie podanie tego hasła.

Szalony Kapelusznik
źródło
2
Czy istnieje różnica między „wystawcą SSL” a urzędem certyfikacji?
Jonathan
3
Technicznie nie wydają oni samego protokołu SSL, ale certyfikat zgodny z SSL. Wydaje mi się, że emitent SSL jest mniej przejrzysty. Moim skromnym zdaniem wystawca certyfikatu SSL byłby jasny.
Jonathan
6
Bardzo (bardzo) kompletna odpowiedź, kiedy nie była potrzebna IMHO. Opierając się na zadanym pytaniu, możesz wyeliminować całą swoją odpowiedź, z wyjątkiem tego, że następujące „Hasło wyzwania” to w zasadzie wspólna tajemnica ... Uważam, że odpowiedziałby tak samo kompletnie na zadane pytanie, z mniej rozpraszającymi, nieistotnymi informacjami.
Joe
3
@joe dzięki! To, czego nie widzisz (bo nie masz przedstawiciela), to to, że odpowiadałem na wcześniej usuniętą odpowiedź bardzo wysoko ocenionego użytkownika (który w tym przypadku był niestety zły), więc musiałem to zrobić obalenie punkt po punkcie. Późniejsze usunięcie, którego autor nie zrobił, sprawia, że ​​mój wygląda trochę dziwnie, ale do tej pory postanowiłem go znieść. Jeśli wystarczająca liczba innych osób poprze twój punkt widzenia, oceniając swój komentarz, zmienię moją odpowiedź.
MadHatter
3
Zaskoczyło mnie to samo pytanie i ta odpowiedź nie była zbyt pomocna dla mojego ograniczonego zrozumienia tematu (ze względu na sposób, w jaki jest napisany), ale na szczęście znalazłem odpowiedź z security.stackexchange.com/a/77082/67048
zagrimsan