如何将SHA256RSA签名的服务器证书转换为SHA1RSA?

时间:2012-12-09 22:26:29

标签: tomcat ssl-certificate rsa keystore sha256

我正在使用tomcat密钥库生成私钥。生成并提交证书请求后,服务器证书似乎具有签名SHA256RSA算法,并最终给出“无法从回复错误建立链”。根证书和中间证书都是SHA1RSA。在生成密钥对和证书请求时,已将其指定为SHA1RSA作为签名算法。

是否有人可以协助如何使用SHA256RSA生成服务器证书?

以下是我遵循的步骤(为了便于阅读,分为多行):

keytool -genkey -dname "CN=xxxx, OU=Servers, O=xx, C=US" \
    -alias tomcat -keyalg RSA -sigalg SHA1withRSA -keysize 2048 \
    -keypass xxx -keystore tomcat2k.keystore

keytool -certreq -v -alias tomcat -keyalg RSA -sigalg SHA1withRSA \
    -keysize 2048 -keypass xxx -file certreq.csr -keystore tomcat2k.keystore

收到的证书:Root,Intermediate(SHA1RSA)和Sever(SHA256RSA) 根

中级导入。服务器证书无法建立链。

1 个答案:

答案 0 :(得分:0)

如果您有权访问openssl,我建议使用它而不是keytool。如果生成证书签名请求,请使用选项-sha256设置要查找的哈希算法。

首先生成证书签名请求:

$ openssl genrsa -des3 -out server.key 4096
$ openssl req -new -key server.key -out server.csr -sha256

由您选择的CA签署证书签名请求。如果您需要自签名证书,可以使用以下内容,否则请跳过此步骤:

$ openssl genrsa -des3 -out ca.key 4096
$ openssl req -new -x509 -days 365 -key ca.key -out ca.pem
$ openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca.key -set_serial 01 -out server.pem

最后,将证书签名的server.pem证书转换为p7b,这是tomcat所期望的,然后在tomcat密钥库中导入p7b。

$ openssl crl2pkcs7 -nocrl -certfile server.pem -out tomcat2k.p7b -certfile ca.pem
$ keytool -import -trustcacerts -alias server -file tomcat2k.p7b -keystore tomcat2k.jks