如何使用现有CSR文件创建密钥库?

时间:2017-09-07 17:05:26

标签: java apache amazon-web-services tomcat ssl

我在GoDaddy(Apache)中有一个网站,在Amazon AWS(Apache Tomcat)中有一个应用程序。

网站域名(apache):example.com

应用程序域(apache tomcat):sub.example.com

我知道如何在GoDaddy中安装example.com的证书,我使用此应用程序生成CSR和私钥:

https://www.rapidsslonline.com/ssl-tools/csr-generator.php

我复制CSR以请求证书,最后使用私钥安装它。

我知道如何在tomcat中为sub.example.com安装证书,创建一个密钥库,然后使用生成的密钥库的csr请求签名,最后下载证书并安装它,这很容易。

但是我有一个问题,我只能使用一个解决方案:安装网站证书或安装tomcat证书,但不能同时安装两者。为什么?因为生成器生成的CSR与密钥库生成的CSR不同,我需要私钥(生成器给出)。

然后,这就是我的问题的原因,我如何使用现有的CSR文件创建密钥库?

我的想法是使用该CSR文件创建密钥库(可能存在keytool的参数),然后使用它生成新证书。在此之后我可以在Apache和tomcat中安装,我该怎么做?

也许另一个解决方案是如何获取密钥库的私钥,它也可以。

2 个答案:

答案 0 :(得分:1)

如上所述,您的问题没有意义。这些都不涉及CSR文件。据我所知,您无法将CSR导入密钥库,即使可以,操作也没有意义。

真正发生的是您收到的PFX文件已经是密钥库,并且已经包含密钥对,签名证书和CA链。您可以直接将该文件用作Java中的PKCS#11密钥库,或者将整个文件导入到keytool的JKS密钥库中。

您可以通过生成密钥对和CSR来密钥库启动。然后,您可以签名并收到签名证书和CA链。然后,您可以使用与生成密钥对时相同的别名将这些内容导入密钥库。

答案 1 :(得分:0)

好的,我自己解决了:

我没有使用生成器,只需使用keytool创建密钥库,之后:

keytool 
-importkeystore -srckeystore <keystorefile> 
-destkeystore keystore.p12 -deststoretype PKCS12 
-srcalias <jkskeyalias> -srcstorepass <passwordhere> 
-srckeypass <passwordhere>  -deststorepass <passwordhere> 
-destkeypass <passwordhere> 

然后将keystore.p12转换为私钥文件:

openssl pkcs12 -in keystore.p12 -nocerts -nodes -out private.key

我明白了:

Bag Attributes
    friendlyName: tomcat
    localKeyID: 54 69 6D 65 20 31 35 30 34 38 30 37 33 30 31 31 37 34 
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCgd4Hed6e2ArVx
bptp6zJDaAKOy4rWe4SHkjuWO7wgcxx4YoMARiIc2/xs070csTLCPXCmH+XtjX5Z
...
ej4hBu/2Bhv1QfH24gRKwHDsBAtQEa6nEn+LwPklgh5KbjY2ocSh6LIQEP4b+4CU
yneEbq6rJS6QLIhxgkEFZO6Jcw==
-----END PRIVATE KEY-----