如何在没有私钥的情况下安装 X509 证书链

How to install X509 certificate chain without the private key

我的客户给了我三个证书:

DigiCert Global Root CA.cer - (Root certificate) GeoTrust RSA CA 2018.cer - (Intermediate certificate) krapiuat_sharekhan_com.cer - (SSL certificate for my domain)

我需要在我的 Spring 引导服务器上安装所有三个证书以在同一引导服务器上启用 SSL。

我在我的 Spring 应用程序中将其与嵌入式 Tomcat 服务器一起使用,由于错误无法启动启用 SSL 的服务。

我的尝试如下:

尝试 1

我尝试将所有三个 .cer 文件合并为一个文件并将其添加到密钥库

`cat krapiuat_sharekhan_com.cer  GeoTrust\ RSA\ CA\ 2018.cer  DigiCert\ Global\ Root\ CA.cer> combined_cert.cer

keytool -importcert -keystore krKeyStore.jks -file combined_cert.cer -alias krRiskRatingUAT -trustcacerts`

注意:最终的 jks 文件只显示一个条目作为 trustedCertEntry

然后我在我的 Spring 应用程序的 /resource 文件夹中添加了文件 krKeyStore.jks,并在我的 application.properties 文件中添加了以下行:

`server.port=8443
server.ssl.key-store-type=JKS
server.ssl.key-store=classpath:krKeyStore.jks
server.ssl.key-store-password=mypassword
server.ssl.key-alias=krRiskRatingUAT`

服务启动失败,异常java.io.IOException:jsse.alias_no_key_entry


尝试 2

我尝试将三个证书分别添加到我的密钥库

`keytool -import -trustcacerts -alias root -file DigiCert\ Global\ Root\ CA.cer -keystore krKeyStore20.jks
keytool -import -trustcacerts -alias intermediate -file GeoTrust\ RSA\ CA\ 2018.cer -keystore krKeyStore20.jks
keytool -import -trustcacerts -alias krRiskRatingUAT20 -file krapiuat_sharekhan_com.cer -keystore krKeyStore20.jks`

注意:最终的 jks 文件现在显示三个条目均为 trustedCertEntry

然后我在我的 Spring 应用程序的 /resource 文件夹中添加了文件 krKeyStore20.jks,并在我的 application.properties 文件中添加了以下行:

`server.port=8443
server.ssl.key-store-type=JKS
server.ssl.key-store=classpath:krKeyStore20.jks
server.ssl.key-store-password=mypassword
server.ssl.key-alias=krRiskRatingUAT20`

但错误仍然存​​在 - java.io.IOException: jsse.alias_no_key_entry

总是必须要有钥匙吗?我的客户还没有准备好给我私钥,并希望我在没有密钥的情况下安装证书。任何帮助将不胜感激。

如果没有服务器证书的私钥,您根本无法创建 SSL 服务器。需要私钥来向客户端证明您是证书的所有者,否则任何获得证书访问权限的人(即连接到服务器的每个客户端)都可以声称是证书的所有者,即每个人都可以声称是 google.com 或类似的。