c_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
-
请参见 "Provider Options" in 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 中获取副本。