【问题标题】:How can I create a sha256 fingerprint in openssl如何在 openssl 中创建 sha256 指纹
【发布时间】:2014-03-28 14:59:14
【问题描述】:

我想对指纹进行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

【问题讨论】:

  • [link]openssl.org/docs/apps/x509.html# -md2|-md5|-sha1|-mdc2 要使用的摘要。这会影响任何使用消息摘要的签名或显示选项,例如 -fingerprint、-signkey 和 -CA 选项。如果未指定,则使用 SHA1。如果用于签名的密钥是 DSA 密钥,则此选项无效:SHA1 始终与 DSA 密钥一起使用。不过好像对指纹没有影响。

标签: openssl sha256


【解决方案1】:

如何在 openssl 中创建 sha256 指纹

-sha256 是正确的。


How do you sign OpenSSL Certificate Signing Requests with your Certification Authority? 有一个使用 OpenSSL 使用您自己的 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 = digestdigest可以设置。但我不知道应该使用什么开关。从第 475 行开始:

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

这对我来说看起来很糟糕。

【讨论】:

  • -fingerprint 我试图删除但没有改变。
  • 参考链接创建一个 CA 签名的证书,但是指纹,你将拥有 SHA1。
  • 对我来说这似乎是一个错误(请参阅附加信息)。
  • @user3353855 - 我在想....尝试将 -sha256 也作为 last 选项。如果是最后一个选项,EVP_get_digestbyname 将返回一个好的 EVP_MD 对象,该对象以后不会被假名覆盖(假名返回 NULL)。
猜你喜欢
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
相关资源
最近更新 更多