用途
c_rehash - 为文件创建一个符号连接,并将此符号连接的名称设为文件的hash值。
用法
c_rehash [-old] [-h] [-n] [-v] [ directory... ]
描述
c_rehash扫描指定目录列表中的.pem,.crt,.cer及.crl文件并为这些文件计算hash值,并以计算出的hash值为名字为这些文件创建符号连接。(如果你的操作平台不支持符号连接,则执行的是一个拷贝。)这个功能像很多程序一样有用,对于使用OpenSSL要求建立的目录,其目的是找到证书。
如果命令行中指定了目录名,则依次处理它们。如果命令行中没有指定目录名,那么会去询问SSL_CERT_DIR环境变量,此变量应该像Unix PATH变量一样,以冒号作为分隔,存放目录列表。如果环境变量中未指定目录,则默认的目录由安装时的信息指定,通常是:/usr/local/ssl/certs。
想要一个目录被处理,用户必须对该目录具有可写权限,否则会跳过。创建的连接是HHHHHHHH.D格式,每一个H是一个十六进制的字符,D是一个单一的十进制数字。当处理一个目录时,c_rehash会先将所有符合这种格式的连接移除掉。如果你有一些像这种格式但用于其它目的的连接文件,他们也都将被移除掉。想要跳过移除步骤,可以使用-n标记。当hash CRL时,会额外附加一个r,像下面这样:HHHHHHHH.rD。
多个对象可能有相同的hash,此时会通过D的值来区分。如果发现有重复的,会比较它们完整的SHA-1特征指纹。如果发现一个重复的,将会显示警告信息。
如果有文件不能被作为一个证书或CRL进行检查,那么也会显示一个警告信息。
程序使用了openssl程序去计算hash和特征指纹。如果未找到用户的目录,则设置OPENSSL环境变量为完整的路径名。可使用任何程序,它将调用如下的证书或CRL:
$OPENSSL x509 -hash -fingerprint -noout -in FILENAME
$OPENSSL crl -hash -fingerprint -noout -in FILENAME
FILENAME是一个文件名。它必须在第一行输出文件的hash值,在第二行输出特征指纹,选择性的含有一些文本或等号前缀。
选项
-old
使用1.0.0版本之前的老式hash(MD5,而不是SHA-1)去生成连接。注意,当前的版本(1.0.2)不会使用老式的hash。
-h
显示一个简短的使用信息。
-n
不要移除已经存在的连接。当要同时保留新的和老式的连接时需要此选项。
-v
打印移除的老式连接和新创建的连接的信息。默认c_rehash只会列出被处理目录的相关信息。
环境变量
OPENSSL
一个可执行的路径,用于生成hash和特征指纹(查看上面的内容)。
SSL_CERT_DIR
以冒号分隔的,将用于操作的目录列表。如果目录已经被列出在命令行中了,则忽略此变量。