Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро JCP, JavaTLS
»
Ошибка Input not an X.509 certificate при попытке импорта корневого сертификата тестового КП сервера
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2020(UTC) Сообщений: 25
Сказал(а) «Спасибо»: 3 раз
|
Есть тестовый сервер Криптопро http://testgost2012.cryptopro.ru/certsrv/http://testgost2012.cryp....ru/certsrv/certcarc.aspНаписано Чтобы доверять сертификатам, выданным этим центром сертификации, установите эту цепочку сертификатов ЦС. Пробую импортировать в jcp-2.0.40502, Java7, Linux в cacerts JCP установлено в Java командой setup_console, ошибок не было при установке. /opt/java64/1.7.0_72/jre/bin/keytool -importcert -file "./certnew.cer" -alias CryptoPro_CA -keystore "/opt/java64/1.7.0_72/jre/lib/security/cacerts" -storepass changeit или так /opt/java64/1.7.0_72/jre/bin/keytool -J-Dkeytool.compat=true -J-Duse.cert.stub=true -provider ru.CryptoPro.JCP.JCP -importcert -file "./certnew.cer" -alias CryptoPro_CA -keystore "/opt/java64/1.7.0_72/jre/lib/security/cacerts" -storepass changeit В обоих случаях выдается ошибка keytool error: java.lang.Exception: Input not an X.509 certificate Пробовал оба варианта: Загрузка сертификата ЦС Загрузка цепочки сертификатов ЦС Пробовал импортировать сертификат ЦС в Windows, экспортировать его в DER Encoded Binary X.509 (.CER) Во всех вариантах одна и та же ошибка на Linux
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2020(UTC) Сообщений: 25
Сказал(а) «Спасибо»: 3 раз
|
Команда C:\Java\jdk1.7.0_79\jre\bin\keytool -importcert -file "certnew.cer" -alias CryptoPro_CA -keystore "C:\Java\jdk1.7.0_79\jre\lib\security\cacerts" -storepass changeit
На Windows сработала без ошибок
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2020(UTC) Сообщений: 25
Сказал(а) «Спасибо»: 3 раз
|
Скопировал cacerts из Java (Windows) в Java (Linux).
При попытке получить информацию о сертификате из cacerts он его находит, но выдает ошибку.
/opt/java64/1.7.0_72/jre/bin/keytool -list -v -keystore "/opt/java64/1.7.0_72/jre/lib/security/cacerts" -alias CryptoPro_CA
keytool error: java.security.cert.CertificateException: Certificate contains invalid public key: Unrecognized public key. java.security.cert.CertificateException: Certificate contains invalid public key: Unrecognized public key. at com.rsa.cryptoj.o.pk.g(Unknown Source) at com.rsa.cryptoj.o.pk.<init>(Unknown Source) at com.rsa.cryptoj.o.pj.<init>(Unknown Source) at com.rsa.cryptoj.o.pg.a(Unknown Source) at com.rsa.cryptoj.o.ot.engineGenerateCertificate(Unknown Source) at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:339) at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:747) at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55) at java.security.KeyStore.load(KeyStore.java:1214) at sun.security.tools.KeyTool.doCommands(KeyTool.java:789) at sun.security.tools.KeyTool.run(KeyTool.java:340) at sun.security.tools.KeyTool.main(KeyTool.java:333)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,002 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Здравствуйте. 1. Команда: Код:
/opt/java64/1.7.0_72/jre/bin/keytool -J-Dkeytool.compat=true -J-Duse.cert.stub=true -provider ru.CryptoPro.JCP.JCP -importcert -file "./certnew.cer" -alias CryptoPro_CA -keystore "/opt/java64/1.7.0_72/jre/lib/security/cacerts" -storepass changeit
некорректная, т.к. вы указали провайдер JCP, а работаете с cacerts, который имеет формат JKS, совершенно незнакомый JCP. Команды для работы с ключами и сертификатами лучше смотреть в руководствах разработчика и администратора в папке Doc дистрибутива, и будут они только с форматами, реализованными в JCP. Команда: Код:
C:\Java\jdk1.7.0_79\jre\bin\keytool -importcert -file "certnew.cer" -alias CryptoPro_CA -keystore "C:\Java\jdk1.7.0_79\jre\lib\security\cacerts" -storepass changeit
корректная, т.к. java все равно, какой сертификат устанавливается, и провайдер используется по умолчанию (для JKS). 2. Цитата: При попытке получить информацию о сертификате из cacerts он его находит, но выдает ошибку.
/opt/java64/1.7.0_72/jre/bin/keytool -list -v -keystore "/opt/java64/1.7.0_72/jre/lib/security/cacerts" -alias CryptoPro_CA
keytool error: java.security.cert.CertificateException: Certificate contains invalid public key: Unrecognized public key. java.security.cert.CertificateException: Certificate contains invalid public key: Unrecognized public key. at com.rsa.cryptoj.o.pk.g(Unknown Source) at com.rsa.cryptoj.o.pk.<init>(Unknown Source) at com.rsa.cryptoj.o.pj.<init>(Unknown Source) at com.rsa.cryptoj.o.pg.a(Unknown Source) at com.rsa.cryptoj.o.ot.engineGenerateCertificate(Unknown Source) at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:339)
В работу вмешивается какой-то провайдер com.rsa.cryptoj. Отредактировано пользователем 10 июля 2020 г. 15:58:02(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2020(UTC) Сообщений: 25
Сказал(а) «Спасибо»: 3 раз
|
Спасибо, действительно, в \jre\lib\security\java.security есть регистрация нестандартного провайдера. Может быть есть общие рекомендации, как разрешить этот конфликт, без отключения провайдера? Судя по всему, провайдер нужен для другого компонента системы.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,002 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Попробуйте указывать провайдер в keytool. Но надо учесть, что это не всегда помогает, так как, например, в случае декодирования открытого ключа сертификата поиск подходящего провайдера происходит по признаку, может ли этот провайдер декодировать ключ (поддерживает ли OID алгоритма ключа), и тогда важно положение провайдера в списке java.security (первый подходящий из списка будет декодировать). Обычно работу с ключами на иностранных алгоритмах обеспечивает встроенный провайдер типа Sun. Возможно, в списке java.security провайдер com.rsa.cryptoj (судя по названию пакета, он работает с иностранными алгоритмами) находится в начале списка и потому перехватывает обращения keytool к сертификату. Попробуйте переместить com.rsa.cryptoj в конец списка в java.security, сохраняя правильную нумерацию. Отредактировано пользователем 14 июля 2020 г. 10:16:00(UTC)
| Причина: Не указана |
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро JCP, JavaTLS
»
Ошибка Input not an X.509 certificate при попытке импорта корневого сертификата тестового КП сервера
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close