Что такое контрольный пароль?

170

Я устанавливаю SSL на сервере Ubuntu. Одним из полей, которые он запрашивает в рамках настройки CSR, является «пароль для вызова». Что это такое? По умолчанию пусто. Нужно ли вводить один?

Уилл Мартин
источник

Ответы:

152

«Пароль вызова», запрашиваемый как часть генерации CSR, отличается от ключевой фразы, используемой для шифрования секретного ключа ( запрашивается во время генерации ключа или когда ключ открытого текста позже шифруется - и затем запрашивается снова каждый раз, когда включена поддержка SSL Служба, которая использует это запускается ).

Вот генерируемый ключ и начало сгенерированного ключа:

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

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

Этот ключ не имеет парольной фразы. Мне не предложили один при создании, и я не вошел в один. Теперь давайте сгенерируем зашифрованный ключ:

$ 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

Таким образом, должно быть ясно, как выглядит зашифрованный закрытый ключ (который apache или любой другой сервер с поддержкой SSL должен будет разблокировать для него при запуске) и открытый секретный ключ (который не требует разблокировки во время запуска службы) выглядят , Теперь я сгенерирую CSR с паролем вызова из незашифрованного ключа:

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

И просто чтобы показать, что ключ волшебным образом не стал зашифрованным:

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

Итак, еще раз говорю: «пароль вызова», запрошенный как часть генерации CSR, - это не то же самое, что фраза-пароль, используемая для шифрования секретного ключа. «Пароль для вызова» - это, по сути, одноразовый общий секретный ключ между вами и эмитентом сертификата SSL (также называемый центром сертификации или CA), встроенный в CSR, который эмитент может использовать для аутентификации вас в случае необходимости. Некоторые эмитенты сертификатов SSL делают это более ясным, чем другие; посмотрите внизу этой страницы, чтобы увидеть, где, по их словам, нужен пароль для вызова, а не при перезапуске apache:

Если вы решите ввести и использовать пароль для вызова, вам нужно будет сохранить этот пароль в надежном месте. Если вам по какой-либо причине потребуется переустановить сертификат, вам потребуется ввести этот пароль.

Безумный Шляпник
источник
2
Есть ли разница между «эмитентом SSL» и центром сертификации (центром сертификации)?
Джонатан
3
Технически они не выпускают сам протокол SSL, а скорее SSL-совместимый сертификат. Мне кажется, эмитент SSL менее понятен. Эмитент SSL-сертификата будет понятен, на мой скромный взгляд.
Джонатан
6
Очень (очень) полный ответ, когда никто не нужен ИМХО. Основываясь на заданном вопросе, вы можете исключить все свои ответы, за исключением следующего: «Пароль для вызова - это, по сути, секретный одноразовый номер ...». Я полагаю, что ответ на заданный вопрос был бы таким же полным, с менее отвлекающей и не относящейся к делу информацией.
Джо
3
@ Джо, спасибо! Что вы не видите (потому что у вас нет представителя), так это то, что я отвечал на удаленный ранее ответ очень высоко оцененного пользователя (который в этом случае, к сожалению, ошибался), поэтому пришлось сделать поэтапное опровержение. Последующее удаление, которое не было сделано его автором, делает мой взгляд немного странным, но до сих пор я решил оставить его в покое. Если достаточно других поддержит вашу точку зрения, проголосовав за ваш комментарий, я исправлю свой ответ.
MadHatter
3
Я был озадачен этим самым вопросом и нашел этот ответ не слишком полезным для моего ограниченного понимания предмета (из-за того, как он написан), но, к счастью, нашел свой ответ от security.stackexchange.com/a/77082/67048
Загримсан