Я создаю CA и сертификат с cfssl
но я не могу импортировать сертификат в хранилище ключей JAVA с помощью ключевой инструмент
.
Сгенерированный сертификат несовместим с реализацией keycert/Java x509? Или я что-то не так делаю?
Создать ЦС
# сгенерировать my-ca{,-key}.pem
cfssl печать по умолчанию csr \
| cfssl gencert -initca-\
| cfssljson -голая моя-ca
# импортировать ca
keytool -importcert -alias my-ca -file my-ca.pem -storepass changeit -noprompt
Примечание: в этом случае keytool -importcert работает нормально.
Сгенерировать сертификат
кот cfssl.json
#{
# "подписание": {
# "По умолчанию": {
# "срок действия": "87600ч",
# "usages": ["подпись", "шифрование ключей", "аутентификация сервера", "аутентификация клиента"]
# }
# }
#}
# сгенерировать сертификат
эхо {} \
| cfssl gencert -ca=my-ca.pem -ca-key=my-ca-key.pem -config=cfssl.json -hostname=my-host - \
| cfssljson -голый мой хост
# сертификат импорта
keytool -importcert -file my-host.pem -alias my-host -storepass changeit -noprompt
Но теперь он отвечает:
ошибка keytool: java.lang.Exception: введите не сертификат X.509
Это меня смущает. Openssl, похоже, доволен сертификатом:
openssl x509 -текст -в my-host.pem
# вывод выглядит нормально, ecdsa-with-SHA256, см. суть
openssl x509 -in my-host.pem \
| diff мой-host.pem -
# нет разницы между повторно сгенерированным x509
-текстовый вывод
Дополнительные наблюдения: CURL и веб-браузеры прекрасно принимают сертификат. Жалуются только Java-приложения.
Информация:
версия cfssl
#Версия: 1.2.0
#Редакция: dev
#Время выполнения: go1.8.1
Java --версия
#openjdk 14.0.2 2020-07-14
Среда выполнения #OpenJDK (сборка 14.0.2+12-Ubuntu-120.04)
#OpenJDK 64-битная виртуальная машина сервера (сборка 14.0.2+12-Ubuntu-120.04, смешанный режим, совместное использование)
keytool -showinfo -tls
# см. суть для полного вывода
-showinfo -tls