Asides: у вас есть сертификата подписанного CA, но сертификат является не подписанного CSR. Some данные в сертификате такие же, как некоторые данные в CSR, но не все. Кроме того, я удивляюсь, почему вы выполнили инструкции digicert для Apache/OpenSSL, а не для Tomcat/Java, что было бы намного проще, потому что Jetty также является Java.
В любом случае: инструкции на этой странице Oracle работают только в том случае, если вы создали секретный ключ и CSR с Java keytool, как описано в шагах 1,2,3. Кроме того, этапы 4 и 5 + 6 представляют собой альтернативы; хотя текст не так ясен, как может быть, вы делаете то или другое, не то, и другое - и только после выполнения 1,2,3.
Учитывая, что вы сейчас находитесь, ваш единственный вариант - преобразовать файлы OpenSSL в pkcs12 и, возможно, затем использовать keytool для преобразования pkcs12 в JKS. (Java crypto сам может использовать pkcs12 напрямую, но не все Java-крипто-приложения могут ссылаться на эту опцию, и я не знаю, может ли Jetty.)
Вы говорите, что попробовали это и не указали никаких подробностей о том, что вы сделали, но я догадываюсь, что, скорее всего, у вашего файла «Digicert CA» есть промежуточный CA не корень, и для получения полной цепочки вам нужно добавить root. (Полная цепочка на самом деле не требуется для формата pkcs12 и, следовательно, подкоманды openssl pkcs12
, но очень желательно для SSL/TLS, таких как Jetty, и поэтому вы должны это сделать.)
Сначала проверьте, что ваши (немедленные) CA и что DigicertCA.crt
это с
openssl x509 -in $yourcert.crt -noout -issuer
openssl x509 -in DigicertCA.crt -noout -subject -issuer
Если эмитент вашей серт соответствует предмету DigicertCA, и они (оба) включают в себя что-то вроде «промежуточного ЦСА "или„SSL CA“, и эмитент DigicertCA имеет„CN“, который является любой из DigiCert Assured ID Root CA
, DigiCert Global Root CA
или DigiCert High Assurance EV Root CA
то вам повезло, если вы (или кто-либо еще) не удалил Digicert root (s) по умолчанию cacerts
в вашей Java (JRE). Используйте keytool -exportcert
для копирования этого корня digicert из соответствующей записи в JRE/lib/security/cacerts
в файл. Объедините свой секретный ключ, ваш сертификат, промежуточный сертификат «DigicertCA» и соответствующий корневой сертификат в один файл, и отправьте его на openssl pkcs12 -export [-name whatever]
и направьте вывод в файл, указав непустой пароль.
(Другие случаи:. Если DigicertCA.crt на самом деле является корнем и соответствует эмитенту вашей CERT, это было бы очень странно, если это корень и не совпадает с эмитентом вашей CERT, вам не хватает промежуточный сертификат CA (или, возможно, даже более одного), вы сможете получить его (от Digicert), если он (DigicertCA.crt) соответствует эмитенту вашего сертификата и не является корневым, но его эмитент не является один из корней, названных выше, вам нужно больше для вашей сертификаты цепи, но без дополнительной информации я не могу советовать, которые.)
с файлом PKCS12, сделайте
keytool -importkeystore -srckeystore p12file -srcstoretype pkcs12 -destkeystore newjksfile
Thanks dave_thompsom_085 Я следил за вашим предложением и получил мой сертификат. –