# phpman > man > OPENSSL-REHASH(1SSL)

[OPENSSL-REHASH(1SSL)](https://www.chedong.com/phpMan.php/man/OPENSSL-REHASH/1SSL/markdown)                           OpenSSL                          [OPENSSL-REHASH(1SSL)](https://www.chedong.com/phpMan.php/man/OPENSSL-REHASH/1SSL/markdown)



## NAME
       openssl-rehash, c_rehash - Create symbolic links to files named by the hash values

## SYNOPSIS
       **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_] ...

## DESCRIPTION
       This command is generally equivalent to the external script **c**___**rehash**, except for minor
       differences noted below.

       **openssl** **rehash** scans directories and calculates a hash value of each _.pem_, _.crt_, _.cer_, or
       _.crl_ file in the specified directory list and creates symbolic links for each file, where the
       name of the link is the hash value.  (If the platform does not support symbolic links, a copy
       is made.)  This command is useful as many programs that use OpenSSL require directories to be
       set up like this in order to find certificates.

       If any directories are named on the command line, then those are processed in turn. If not,
       then the **SSL**___**CERT**___**DIR** environment variable is consulted; this should be a colon-separated
       list of directories, like the Unix **PATH** variable.  If that is not set then the default
       directory (installation-specific but often _/usr/local/ssl/certs_) is processed.

       In order for a directory to be processed, the user must have write permissions on that
       directory, otherwise an error will be generated.

       The links created are of the form _HHHHHHHH.D_, where each _H_ is a hexadecimal character and _D_
       is a single decimal digit.  When a directory is processed, all links in it that have a name
       in that syntax are first removed, even if they are being used for some other purpose.  To
       skip the removal step, use the **-n** flag.  Hashes for CRL's look similar except the letter **r**
       appears after the period, like this: _HHHHHHHH._**r**_D_.

       Multiple objects may have the same hash; they will be indicated by incrementing the _D_ value.
       Duplicates are found by comparing the full SHA-1 fingerprint. A warning will be displayed if
       a duplicate is found.

       A warning will also be displayed if there are files that cannot be parsed as either a
       certificate or a CRL or if more than one such object appears in the file.

### Script Configuration
       The **c**___**rehash** script uses the **openssl** program to compute the hashes and fingerprints. If not
       found in the user's **PATH**, then set the **OPENSSL** environment variable to the full pathname.
       Any program can be used, it will be invoked as follows for either a certificate or CRL:

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

       where _FILENAME_ is the filename. It must output the hash of the file on the first line, and
       the fingerprint on the second, optionally prefixed with some text and an equals sign.

## OPTIONS
### -help -h
           Display a brief usage message.

### -old
           Use old-style hashing (MD5, as opposed to SHA-1) for generating links to be used for
           releases before 1.0.0.  Note that current versions will not use the old style.

### -n
           same directory.

### -compat
           Generate links for both old-style (MD5) and new-style (SHA1) hashing.  This allows
           releases before 1.0.0 to use these links along-side newer releases.

### -v
           only lists each directory as it is processed.

### -provider
### -provider-path
### -propquery
           See "Provider Options" in [**openssl**(1)](https://www.chedong.com/phpMan.php/man/openssl/1/markdown), [**provider**(7)](https://www.chedong.com/phpMan.php/man/provider/7/markdown), and [**property**(7)](https://www.chedong.com/phpMan.php/man/property/7/markdown).

## ENVIRONMENT
       **OPENSSL**
           The path to an executable to use to generate hashes and fingerprints (see above).

       **SSL**___**CERT**___**DIR**
           Colon separated list of directories to operate on.  Ignored if directories are listed on
           the command line.

## SEE ALSO
       [**openssl**(1)](https://www.chedong.com/phpMan.php/man/openssl/1/markdown), [**openssl-crl**(1)](https://www.chedong.com/phpMan.php/man/openssl-crl/1/markdown), [**openssl-x509**(1)](https://www.chedong.com/phpMan.php/man/openssl-x509/1/markdown)

## COPYRIGHT
       Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved.

       Licensed under the Apache License 2.0 (the "License").  You may not use this file except in
       compliance with the License.  You can obtain a copy in the file LICENSE in the source
       distribution or at <<https://www.openssl.org/source/license.html>>.



3.0.2                                        2026-04-07                         [OPENSSL-REHASH(1SSL)](https://www.chedong.com/phpMan.php/man/OPENSSL-REHASH/1SSL/markdown)
