我想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
Run Code Online (Sandbox Code Playgroud)
更改默认值如下:
[ CA_default ]
default_md = sha256 # Change
[ req ]
req_extensions = v3_req # Uncomment
Run Code Online (Sandbox Code Playgroud)
如何在openssl中创建sha256指纹
-sha256 是正确的.
有一个使用OpenSSL与您自己的CA签署服务器CSR的示例您如何使用您的证书颁发机构签署OpenSSL证书签名请求?.
根据反馈,使用时看起来SHA1是硬编码的-fingerprint.下面是<openssl dir>/apps/x509.c(所有OpenSSL的应用,如ca,x509,encrypt,decrypt,等位于apps/).从935左右x509.c:
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)));
....
Run Code Online (Sandbox Code Playgroud)
至于const EVP_MD *fdig = digest,digest可以设定.但我不知道应该使用什么开关.从第475行附近:
else if ((md_alg=EVP_get_digestbyname(*argv + 1)))
{
/* ok */
digest=md_alg;
}
Run Code Online (Sandbox Code Playgroud)
那看起来很破碎.
| 归档时间: |
|
| 查看次数: |
17918 次 |
| 最近记录: |