4

我正在使用 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

收到的证书:根、中间(SHA1RSA)和服务器(SHA256RSA)根。

中间体被导入。服务器证书无法建立链。

4

1 回答 1

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 所期望的,然后将 p7b 导入 tomcat 密钥库中。

$ openssl crl2pkcs7 -nocrl -certfile server.pem -out tomcat2k.p7b -certfile ca.pem
$ keytool -import -trustcacerts -alias server -file tomcat2k.p7b -keystore tomcat2k.jks
于 2015-04-20T07:51:49.980 回答