Как установить цепочку сертификатов X509 без закрытого ключа - PullRequest
0 голосов
/ 05 февраля 2020

Мой клиент получил три сертификата:

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

Предполагается, что все три сертификата будут установлены на моем сервере Spring Boot для включения SSL на одном и том же.

Я использую это со встроенным сервером Tomcat в моем приложении Spring и не могу запустить службу с поддержкой 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 в качестве trustCertEntry * 1017 была показана только одна запись. *

Затем я добавил файл krKeyStore.jks в папку / resource моего приложения Spring и добавил следующие строки в мой файл 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 теперь отображаются три записи, все они представлены в виде trustCertEntry

Затем я добавил файл krKeyStore20.jks в папку / resource моего приложения Spring и добавил следующие строки в файл 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

Всегда ли обязательно иметь ключ? Мой клиент не готов предоставить мне закрытый ключ и хочет, чтобы я установил сертификаты без ключа. Любая помощь будет оценена по достоинству.

1 Ответ

0 голосов
/ 05 февраля 2020

Вы просто не можете создать сервер SSL, не имея закрытого ключа для сертификата сервера. Закрытый ключ необходим, чтобы доказать клиенту, что вы являетесь владельцем сертификата, в противном случае любой, кто получает доступ к сертификату (то есть каждый клиент, подключающийся к серверу), может заявить, что является владельцем сертификата, т.е. каждый может требовать быть google.com или похожим.

...