openssl ca -revoke signed/0A.pem -config caconfig.cnf
这需要 CA 的私钥做什么?除了更新 index.txt 之外,它还有什么作用吗?
openssl ca -revoke signed/0A.pem -config caconfig.cnf
这需要 CA 的私钥做什么?除了更新 index.txt 之外,它还有什么作用吗?
这是 OpenSSL 的一个错误(至少在 1.0.1c 版本中);准确地说,是命令行“ca”选项处理的一个错误。如果您查看OpenSSL 源代码apps/ca.c
中的源文件,您可能会看到该函数从解析命令行选项开始,然后读取配置文件,然后执行以下操作:MAIN()
/*****************************************************************/
/* report status of cert with serial number given on command line */
if (ser_status)
{
/* some stuff */
goto err;
}
/*****************************************************************/
/* we definitely need a private key, so let's get it */
if ((keyfile == NULL) && ((keyfile=NCONF_get_string(conf,
section,ENV_PRIVATE_KEY)) == NULL))
{
lookup_fail(section,ENV_PRIVATE_KEY);
goto err;
}
if (!key)
{
free_key = 1;
if (!app_passwd(bio_err, passargin, NULL, &key, NULL))
{
BIO_printf(bio_err,"Error getting password\n");
goto err;
}
}
pkey = load_key(bio_err, keyfile, keyform, 0, key, e,
"CA private key");
这意味着代码将识别检查证书吊销状态的特殊情况(命令行选项-status
),这当然不需要CA私钥,但会坚持加载CA私钥,无论是是否真的需要。
特别是,在此工具的上下文中,吊销index.txt
证书意味着在颁发证书的“数据库”中将其标记为已吊销,该“数据库”不使用 CA 私钥。使用 CA 私钥的是签署 CRL(它通知世界其他地方证书已被真正吊销),但-revoke
命令行选项不会触发它(它是-gencrl
暗示发行新 CRL 的选项)。
摘要: “ openssl ca -revoke
”意味着毫无理由地读取 CA 私钥。随意从源代码中修补该工具,并可能将修补程序提交给 OpenSSL 维护者。
需要 CA 的私钥,因为撤销必须由 CA 签名。否则,撤销可能由任何实体完成。
Uwe Plonus 是对的。CA 始终提供一个吊销列表 ( CRL ),其中所有吊销的证书都按其序列号和其他信息(如 crt 吊销的日期时间)列出。
有关详细信息,请参阅http://www.openssl.org/docs/apps/crl.html#。