我正在Ubuntu服务器上设置SSL。作为设置CSR的一部分,它要求提供的字段之一是“挑战密码”。那是什么?默认为空。我需要输入一个吗?

#1 楼

作为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生成的一部分要求的“挑战密码”与用于加密密钥的密码短语不同。 “挑战密码”基本上是您与CSR中嵌入的SSL证书发行者(也称为证书颁发机构或CA)之间的共享秘密随机数,如果有需要,发行者可以使用它来对您进行身份验证。一些SSL证书颁发者比其他人更清楚。在此页面的底部往下看,看看他们在哪里要求输入挑战密码-并非在重新启动apache时使用:


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


评论


“ SSL颁发者”和CA(证书颁发机构)之间有区别吗?

–乔纳森
16-4-16的1:30

从技术上讲,它们不是在发布SSL协议本身,而是在发布SSL兼容证书。我觉得SSL Issuer不太清楚。以我的拙见,SSL证书颁发者会很清楚。

–乔纳森
16年5月16日在8:59

当不需要IMHO时,非常(非常)完整的答案。根据提出的问题,您可以消除所有答案,只是“遵循“挑战密码”基本上是一个共享的秘密随机数...”。我相信这将完全回答所问的问题,而不会分散无关紧要的信息。

– joe
17-2-23在6:30



@joe谢谢!您看不到的内容(因为您没有销售代表)是我对一个非常受好评的用户(在这种情况下,很不幸,是错误的)对一个早已删除的答案的回答,所以不得不这样做逐点反驳。其后续删除(作者未完成)确实使我的看上去有些奇怪,但直到现在我还是选择了保留它。如果有足够多的其他人通过发表评论来支持您的观点,我将修改答案。

– MadHatter
17-2-23在7:41



我对这个问题感到困惑,发现这个答案对我对主题的有限理解(由于它的写作方式)没有帮助,但幸运的是,我从security.stackexchange.com/a/77082/67048找到了答案。

– Zagrimsan
18年9月9日在7:26