2012-12-09 199 views
4

我正在用tomcat keystore生成一个私钥。生成并提交证书申请后,服务器证书似乎有签名SHA256RSA算法,最终给出了“从回答错误无法建立产业链”。根证书和中间证书都是SHA1RSA。在生成密钥对和证书请求时,它被指定为SHA1RSA作为签名算法。如何将SHA256RSA签署的服务器证书转换为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) 根。

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

+0

还有一些人失踪。谁在处理您的CSR并向您发送服务器证书? CA? –

回答

0

如果你有机会获得OpenSSL的,我建议使用的,与其密钥工具。如果您生成证书签名请求,请使用选项-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