OpenSSL

加密和 SSL/TLS 工具包

openssl-rehash

名称

openssl-rehash, c_rehash - 创建以哈希值命名的文件的符号链接

语法

openssl rehash [-h] [-help] [-old] [-compat] [-n] [-v] [-provider name] [-provider-path path] [-propquery propq] [directory] ...

c_rehash [-h] [-help] [-old] [-n] [-v] [-provider name] [-provider-path path] [-propquery propq] [directory] ...

描述

此命令通常等同于外部脚本 c_rehash,除了下面提到的细微差别。

openssl rehash 扫描目录并计算指定目录列表中每个 .pem.crt.cer.crl 文件的哈希值,并为每个文件创建符号链接,其中链接的名称为哈希值。(如果平台不支持符号链接,则会创建一个副本。)此命令很有用,因为许多使用 OpenSSL 的程序需要像这样设置目录才能找到证书。

如果命令行上命名了任何目录,则依次处理这些目录。否则,将参考 SSL_CERT_DIR 环境变量;这应该是一个用冒号分隔的目录列表,类似于 Unix 的 PATH 变量。如果未设置,则处理默认目录(特定于安装,但通常为 /usr/local/ssl/certs)。

为了处理目录,用户必须对该目录具有写权限,否则将生成错误。

创建的链接格式为 HHHHHHHH.D,其中每个 H 都是一个十六进制字符,D 是一个十进制数字。当处理目录时,首先删除其中所有名称采用该语法的链接,即使它们用于其他目的。要跳过删除步骤,请使用 -n 标志。CRL 的哈希值看起来类似,只是在句点后出现字母 r,如下所示:HHHHHHHH.rD

多个对象可能具有相同的哈希值;它们将通过递增 D 值来指示。通过比较完整的 SHA-1 指纹来查找重复项。如果找到重复项,将显示警告。

如果文件无法解析为证书或 CRL,或者文件中出现多个此类对象,也将显示警告。

脚本配置

c_rehash 脚本使用 openssl 程序来计算哈希值和指纹。如果在用户的 PATH 中找不到,则将 OPENSSL 环境变量设置为完整路径名。可以使用任何程序,它将按如下方式为证书或 CRL 调用:

$OPENSSL x509 -hash -fingerprint -noout -in FILENAME
$OPENSSL crl -hash -fingerprint -noout -in FILENAME

其中 FILENAME 是文件名。它必须在第一行输出文件的哈希值,在第二行输出指纹,可以选择在前面加上一些文本和等号。

选项

-help -h

显示简短的使用信息。

-old

使用旧式哈希(MD5,而不是 SHA-1)生成链接,用于 1.0.0 之前的版本。请注意,当前版本将不使用旧式哈希。

-n

不要删除现有链接。当在同一目录中保留新旧式链接时需要此选项。

-compat

为旧式(MD5)和新式(SHA1)哈希生成链接。这允许 1.0.0 之前的版本与更新的版本一起使用这些链接。

-v

打印有关已删除的旧链接和已创建的新链接的消息。默认情况下,此命令仅在处理每个目录时列出它。

-provider name
-provider-path path
-propquery propq

请参阅 "openssl(1) 中的提供程序选项"provider(7)property(7)

环境

OPENSSL

用于生成哈希值和指纹的可执行文件的路径(请参见上文)。

SSL_CERT_DIR

要操作的目录的冒号分隔列表。如果命令行上列出了目录,则忽略此选项。

参见

openssl(1)openssl-crl(1)openssl-x509(1)

版权所有 2015-2020 OpenSSL 项目作者。保留所有权利。

根据 Apache 许可证 2.0(“许可证”)获得许可。除非符合许可证,否则您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获取副本。