如何在openssl中创建sha256指纹

时间:2014-02-26 02:06:01

标签: openssl sha256

我想sha256指纹使用openssl。 我试过了,但你必须要sha1。我该怎么办?

我正在使用OpenSSL 1.0.1f。

命令

openssl md5 * >rand.dat

openssl genrsa -rand rand.dat -aes256 2048 > server.key

openssl req -new -key server.key -sha256 -config openssl.cfg > server.csr

openssl x509 -fingerprint -sha256 -in server.csr -req -signkey server.key -extensions v3_req -extfile openssl.cfg -out server.cer

已更改默认值如下:

[ CA_default ]
default_md  = sha256    # Change

[ req ]
req_extensions = v3_req     # Uncomment

1 个答案:

答案 0 :(得分:5)

  

如何在openssl中创建sha256指纹

-sha256是正确的。


有一个使用OpenSSL在How do you sign OpenSSL Certificate Signing Requests with your Certification Authority?与您自己的CA签署服务器CSR的示例。


根据反馈,使用-fingerprint时,SHA1显示为硬编码。以下内容来自<openssl dir>/apps/x509.c(所有OpenSSL应用,例如cax509encryptdecrypt等位于apps/)。来自x509.c的第935行:

else if (fingerprint == i)
    {
    int j;
    unsigned int n;
    unsigned char md[EVP_MAX_MD_SIZE];
    const EVP_MD *fdig = digest;

    if (!fdig)
        fdig = EVP_sha1();

    if (!X509_digest(x,fdig,md,&n))
        {
        BIO_printf(bio_err,"out of memory\n");
        goto end;
        }
    BIO_printf(STDout,"%s Fingerprint=", OBJ_nid2sn(EVP_MD_type(fdig)));
    ....

const EVP_MD *fdig = digest而言,digest可以设置。但我不知道应该使用什么开关。从第475行附近:

else if ((md_alg=EVP_get_digestbyname(*argv + 1)))
    {
    /* ok */
    digest=md_alg;
    }

这看起来很糟糕。