什么是挑战密码?

什么是挑战密码?

我正在 Ubuntu 服务器上设置 SSL。设置 CSR 时,它要求输入的字段之一是“质询密码”。那是什么?默认为空白。我需要输入一个吗?

答案1

现在,根据大家的要求,总结少量:

作为 CSR 生成的一部分而请求的质询密码与用于加密密钥的密码短语不同。质询密码基本上是您和 SSL 证书颁发机构之间的共享秘密随机数,嵌入在 CSR 中,颁发机构可以在需要时使用该密码对您进行身份验证。


完整而古老的答案,因为原因

作为 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 时:

如果您选择输入并使用质询密码,则需要确保将该密码保存在安全的地方。如果您出于任何原因需要重新安装证书,则需要输入该密码。

相关内容