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

标签 tomcat ssl-certificate rsa keystore sha256

我正在使用 tomcat keystore 生成私钥。生成并提交证书请求后,服务器证书似乎具有签名 SHA256RSA 算法并最终给出“无法建立来自回复错误的链”。根证书和中间证书都是 SHA1RSA。在生成 key 对和证书请求时,已将其指定为 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) 根。

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

最佳答案

如果您有权访问 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 keystore。

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

关于tomcat - 如何将 SHA256RSA 签名的服务器证书转换为 SHA1RSA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792514/

相关文章:

unix - 改成80端口后无法访问tomcat主页

php - 为处理器网关安装 SSL 证书

ssl - 证书签名请求 (CSR) - 公司名称

angularjs - 无法通过 Jboss 4.2.2 部署使用 Spring Boot 构建的 Web 应用程序

AngularJS web.xml for tomcat servlet config <error-page>

tomcat - 将 TeamCity 部署到 Azure 网站失败

ios - 在 iOS 应用程序中嵌入 SSL 根证书,而不是为整个系统安装它

php - 如何在 openssl_pkey_new 中指定密码加密强度?

javascript - JS中RSA加解密成功,C#中解密失败

java - (Android/Java)创建RSA私钥实例