如何在openssl中创建sha256指纹
我想sha256指纹使用openssl。 我试过了,但是你必须要sha1。我该怎么办?如何在openssl中创建sha256指纹
我正在使用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
我怎么能OpenSSL中创建一个SHA256指纹
-sha256
是正确的。
有签署服务器的CSR与使用OpenSSL在How do you sign OpenSSL Certificate Signing Requests with your Certification Authority?自己的CA的一个例子。
根据反馈,在使用-fingerprint
时,SHA1被硬编码。下面是从<openssl dir>/apps/x509.c
(所有OpenSSL应用程序,如ca
,x509
, encrypt
,decrypt
等位于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;
}
这看起来让我失望了。
-fingerprint我试图删除但没有改变。 – user3353855
参照链接创建一个CA签名的证书,但指纹会显示SHA1。 – user3353855
它看起来像一个bug(请参阅附加信息)。 – jww
[链接] https://www.openssl.org/docs/apps/x509.html# -md2 | -md5 | -sha1 | -mdc2 要使用的摘要。这将影响 使用消息摘要的任何签名或显示选项,例如-fingerprint,-signkey和-CA选项。 如果未指定,则使用SHA1。如果用于签名的密钥是 DSA密钥,则此选项不起作用:SHA1始终与DSA密钥一起使用。 但是,它似乎不影响指纹。 – user3353855