I want to load a KeyStore with the load method but when I use it I got an error. I don’t understant what ECParameter is.
try {
FileInputStream is =new FileInputStream(new File("D:\UZ\key_privateUZ.p12"));
ks = KeyStore.getInstance("PKCS12");
password="1234".toCharArray();
ks.load(is, password);
} catch (Exception e) {
e.printStackTrace();
}
my error:
java.security.cert.CertificateParsingException: java.io.IOException: Only named ECParameters supported
at sun.security.x509.X509CertInfo.<init>(X509CertInfo.java:171)
at sun.security.x509.X509CertImpl.parse(X509CertImpl.java:1788)
at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:202)
at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:97)
at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:339)
at sun.security.pkcs12.PKCS12KeyStore.loadSafeContents(PKCS12KeyStore.java:1441)
at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1313)
at java.security.KeyStore.load(KeyStore.java:1214)
at Main.main(Main.java:21) Caused by: java.io.IOException: Only named ECParameters supported
at sun.security.ec.ECParameters.decodeParameters(ECParameters.java:202)
at sun.security.ec.ECParameters.engineInit(ECParameters.java:319)
at java.security.AlgorithmParameters.init(AlgorithmParameters.java:293)
at sun.security.x509.AlgorithmId.decodeParams(AlgorithmId.java:139)
at sun.security.x509.AlgorithmId.<init>(AlgorithmId.java:114)
at sun.security.x509.AlgorithmId.parse(AlgorithmId.java:381)
at sun.security.x509.X509Key.parse(X509Key.java:168)
at sun.security.x509.CertificateX509Key.<init>(CertificateX509Key.java:75)
at sun.security.x509.X509CertInfo.parse(X509CertInfo.java:705)
at sun.security.x509.X509CertInfo.<init>(X509CertInfo.java:169)
... 8 more
Regars
Wazol
asked Mar 21, 2013 at 10:43
You’ll find plenty of information on EC (elliptic curve) parameters if you do a search. In particular, the JDK Code which throws that exception.
If you look in the relevant method, you will see a commented out section after the exception which indicates:
It is left as a starting point for a complete parsing implementation
In other words the JDK doesn’t support all possible encodings.
You might have better luck using Bouncy Castle which generally has more features than the basic JDK.
It might also help if you explain how the data in the keystore was generated.
answered Mar 21, 2013 at 10:58
Shaun the SheepShaun the Sheep
22.1k1 gold badge71 silver badges98 bronze badges
2
I solved this problem like this
In ECKey class
ECParameterSpec papamSpec = ECNamedCurveTable.getParameterSpec(SECP);
answered Apr 16, 2020 at 1:16
1
Привет Я использую SUN PKCS11 реализации для выполнения операций с сертификатами PKI в USB cryptotokens
Я создал объект поставщика для конкретных маркеров USB, а затем вызвать
Тогда я загрузить его с
ПИН-код введенный пользователем PIN для конкретного сертификата
Теперь разные cryptotokens ведут себя по- разному , когда нагрузка не удается из — за неправильного PIN — кода. Keystore::load бросает IOException , когда PIN — код является неправильным , однако,
Для например.
- лексема USB Watchdata первой бросает диалоговое окно с сообщением «PIN неправилен. X попытки левых» и затем бросает IOException.
- Gemalto и Fietian не бросайте диалоговое окно, но только бросить IOException
Я хочу, чтобы показать сообщение об ошибке PIN для всех типов USB, но если я добавить свой собственный диалог, то на Watchdata я в конечном итоге получить 2 диалоговые окна (1 from Watchdata & 1 of my own).
Есть ли способ, чтобы выяснить, является ли уже показано сообщение об ошибке? Или поочередно, есть ли способ, чтобы подавить диалоговое окно ошибки на ключах, которые показывают свои собственные?
Поведение маркеров конкретное, потому что стандарт не определяет, как именно водители должны вести себя. Таким образом, показывая окно находится вне вашего контроля. Лучшее, что вы можете сделать, это обратиться к поставщику конкретного устройства и попросить их о помощи.
РЕДАКТИРОВАТЬ:
Watchdata, кажется, есть 2 PKCS # 11 модулей:
- WDICP_P11_CCID_v34.dll : Vanilla PKCS # 11 осущ
- WDPKCS.dll : PKCS # 11 + пользовательские функции (ICP СНТ v1.0).
А вот то , что, очевидно , кажется, файл в Кoнфигурировании: C:WindowsSysWOW64WatchDataWatchdata ICP CSP v1.0WatchSafe.ini
Возможное решение , чтобы избежать «PIN Error Dialog»: переход от WDPKCS.dll к WDICP_P11_CCID_v34.dll
Диалоговое окно ошибки вы хотите подавить, как это выглядит? Родной? или Java / Swing-как?
Есть много «слоев» , участвующих в этом процессе.
I am trying to sign a .wgt file(widget which is a jar file) using jarsigner of Java 6. But when I try to sign, it gives me the following error, after asking to enter the passphrase for keystore.
I even tried with a newly created key store, So that I am sure I am entering the correct password. Is there anything else which could have been gone wrong? Thanks in advance!
6 Answers 6
If you’re quoting the password, try removing the quotes. I experienced this error when using jarsigner in the 1.7.0_25-b17 JDK on Windows 7. I typically use earlier versions of jarsigner on Solaris and Linux and have always quoted the password using single quotes because it often contains characters that are interpreted by the shell.
I haven’t verified, but I’m guessing that the shell interpreter on *nix trims quotes before passing the parameters to jarsigner, but the Windows command prompt doesn’t.
For example, instead of
jarsigner -keystore /my/cert/file -storepass ‘password’ /my/jar/file my_alias
jarsigner -keystore /my/cert/file -storepass password /my/jar/file my_alias
I get this error if i try to load the boncy castle keystore using a FileInputStream Maybe a code problem?
I can store the keystore with a file output stream without problems .
- 517 Просмотров
- Метки: нет (добавить)
1. Re: error loading a keystore
- Мне нравится Показать отметки «Мне нравится» (0) (0)
- Действия
2. Re: error loading a keystore
I thought that for someone here this error pointed to a well known problem.
Here is the code for both methods: So now some ideas?
- Мне нравится Показать отметки «Мне нравится» (0) (0)
- Действия
3. Re: error loading a keystore
- Мне нравится Показать отметки «Мне нравится» (0) (0)
- Действия
4. Re: error loading a keystore
sabre150 wrote:
You need to add the BC provider. In a static context you need
I did it. Since I can store the keystore without failures. Only loading throws the error!?
- Мне нравится Показать отметки «Мне нравится» (0) (0)
- Действия
5. Re: error loading a keystore
sabre150 wrote:
You need to add the BC provider. In a static context you need
I did it. Since I can store the keystore without failures. Only loading throws the error!?
- Мне нравится Показать отметки «Мне нравится» (0) (0)
- Действия
6. Re: error loading a keystore
hmm I found the «error».
In the class where I call both methods I call first ‘storeKeyStoreToHD’ and after that
‘loadKeyStoreFromHD’.
If I only call ‘loadKeyStoreFromHD’ it works?!
I try out closing and flushing all the streams but that was not the error.
Maybe there is a delay of time after the storing where access to the same file is not
possible for the keystore?
- Мне нравится Показать отметки «Мне нравится» (0) (0)
- Действия
7. Re: error loading a keystore
- Мне нравится Показать отметки «Мне нравится» (0) (0)
- Действия
8. Re: error loading a keystore
You are right. 😉
Too bad, that I can’t send you a Burgundy 😉
affabilis |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 1 раз |
Spring boot java приложение находится в докер-контейнере, который развернут в kubernetes. ОС: Версия java: Версия Spring Boot Версия JCP: Код загрузки ключевого хранилища. Код:
Кусок лога ошибки: Цитата: java.lang.NoClassDefFoundError: Could not initialize class ru.CryptoPro.JCP.tools.cl_33 Кусок лога при разворачивании приложения: Цитата: main ERROR An exception occurred processing Appender LogToConsole java.lang.NullPointerException Прошу подсказки с чем связана ошибка. Спасибо! |
|
|
Санчир Момолдаев |
|
Статус: Сотрудник Группы: Модератор, Участники Сказал(а) «Спасибо»: 83 раз |
Добрый день! |
Техническую поддержку оказываем тут |
|
|
|
affabilis |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 1 раз |
Автор: Санчир Момолдаев Добрый день! Добрый день! jar дистрибутивы криптопро были добавлены в структуру проекта в корневую директорию в папку /libs и подключены в build.gradle build.gradle: Код:
При деплое проект упаковывается в итоговый app.jar с помощью команды Код:
Скопировал на локальную тачку из кубера итоговый жарник, все дистрибутивы криптопро находятся в app.jar/BOOT-INF/lib/ вместе с остальными зависимостями Отредактировано пользователем 17 февраля 2021 г. 16:07:27(UTC) |
|
|
Санчир Момолдаев |
|
Статус: Сотрудник Группы: Модератор, Участники Сказал(а) «Спасибо»: 83 раз |
а можете создать заявку на портале ТП |
Техническую поддержку оказываем тут |
|
|
|
affabilis |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 1 раз |
Обнаружилась причина проблемы. В поде не создавалась иерархия папок, необходимая для создания и хранения ключевых контейнеров. Проблема решена. |
|
|
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
У меня есть закрытый ключ с форматом кодировки PKCS # 8 в виде файла .pem (и .cert).
Если я попытаюсь вызвать следующий метод:
private KeyStore getKeyStore() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException{
String ks = keystores.get(service);
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(new Base64InputStream(new ByteArrayInputStream(ks.getBytes())), "secret".toCharArray());
return keyStore;
}
Я получаю сообщение об ошибке в строке 4 «keystore.load …»:
Caused by: java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(Unknown Source) ~[na:1.8.0_211]
at sun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source) ~[na:1.8.0_211]
at sun.security.provider.KeyStoreDelegator.engineLoad(Unknown Source) ~[na:1.8.0_211]
at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(Unknown Source) ~[na:1.8.0_211]
at java.security.KeyStore.load(Unknown Source) ~[na:1.8.0_211]
at java_security_KeyStore$load$0.call(Unknown Source) ~[na:na]
Как я могу решить эту проблему? Я читал, что java не поддерживает формат кодирования PKCS # 8 …
Если я попытаюсь импортировать ключ вручную следующим образом:
keytool -import -alias *alias* -keystore cacerts -file *cert.pem*
Я получаю такую ошибку:
keytool error: java.lang.Exception: Input not an X.509 certificate
Я пытался преобразовать pkcs8 в x509 в openssl (с openvpn в windows) … безуспешно.
Работает со старым ключом. Если я заменил старый ключ новым закрытым ключом, он выйдет из строя.
Как я могу исправить эту ошибку?
1 ответ
Лучший ответ
Моя ошибка: я пытаюсь добавить содержимое (в виде строки) закрытого ключа. Правильный способ:
Сначала создайте файл PKCS12 (замените содержимое * * на путь к вашим файлам.) С помощью openssl (я использовал openvpn в Windows):
pkcs12 -inkey *key* -in *cert* -export -out myKeys.pkcs12
Используйте только сертификаты (в моем случае файлы .der).
Импортируйте ключи в хранилище ключей (файл .jks):
keytool -importkeystore -srckeystore myKeys.pkcs12 -srcstoretype pkcs12 -destkeystore *keystoreName*
Для инициализации String с «содержимым» файла .jks я реализую следующий код:
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.FileUtils;
import java.io.File;
public class ClassName{
public static void main(String[] args) {
byte[] bytes = FileUtils.readFileToByteArray(new File("Path to .jks file"));
String bdata = new String(Base64.encodeBase64(bytes, true));
System.out.println(bdata);
}
}
Я беру напечатанные строки и инициализирую ими переменную «ks» (см. Мой код в вопросе).
0
Cello
3 Дек 2019 в 16:59
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,740
Откуда: Крипто-Про
Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 647 раз в 610 постах
Здравствуйте.
1. Ошибку 403 вы получаете, т.к. ваш клиент не отправляет сертификат на сервер, это есть в логах:
Цитата:
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_16 a
FINE: No appropriate cert was found.
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_43 f
FINE: *** Certificate message
***
пусто
Выше в логах есть записи, что найден некий ключевой контейнер 62769612@2022-05-16-AO SPORTBET_copy:
Цитата:
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% getting aliases for Client
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% checking alias: 62769612@2022-05-16-AO SPORTBET_copy…
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% check public key algorithm ignored.
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% signature algorithm not found.
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% check extended key usage of Client, size: 6…
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% Extended key usage found and verified.
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% check credential issuers…
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
WARNING: %% No alias is match
После «check credential issuers» сертификат из 62769612@2022-05-16-AO SPORTBET_copy был отвергнут («No alias is match»), видимо, издатель сертификата не подходит согласно ответу сервера, содержащему список разрешенных имен.
Еще выше логе есть список имен, которые прислал сервер:
Цитата:
FINE: *** CertificateRequest
Cert Types: Type-22, Type-238, Type-239
Supported Signature Algorithms: GOST3411_2012_256withGOST3410_2012_256, GOST3411_2012_512withGOST3410_2012_512, GOST3411withGOST3410EL
Cert Authorities:
<CN=Microsoft Root Certificate Authority, DC=microsoft, DC=com>
<CN=Минкомсвязь России, OID.1.2.643.3.131.1.1=#120C303037373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=Минкомсвязь России, STREET=»улица Тверская, дом 7″, L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru>
<CN=Microsoft Root Authority, OU=Microsoft Corporation, OU=Copyright (c) 1997 Microsoft Corp.>
<CN=Microsoft Root Certificate Authority 2011, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US>
<CN=Головной удостоверяющий центр, OID.1.2.643.3.131.1.1=#120C303037373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=Минкомсвязь России, STREET=»125375 г. Москва, ул. Тверская, д. 7″, L=Москва, ST=77 г. Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru>
<CN=VeriSign Class 3 Public Primary Certification Authority — G5, OU=»(c) 2006 VeriSign, Inc. — For authorized use only», OU=VeriSign Trust Network, O=»VeriSign, Inc.», C=US>
<CN=Microsoft Root Certificate Authority 2010, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US>
<CN=CryptoPro GOST Root CA, O=»LLC «Crypto-Pro»», L=Moscow, ST=Moscow, C=RU, OID.1.2.643.3.131.1.1=#120C303037373137313037393931, OID.1.2.643.100.1=#120D31303337373030303835343434>
<CN=localhost>
<CN=Microsoft ECC TS Root Certificate Authority 2018, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US>
<CN=Минцифры России, OID.1.2.643.100.4=#120A37373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=Минцифры России, STREET=»Пресненская набережная, дом 10, строение 2″, L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@digital.gov.ru>
<CN=Microsoft ECC Product Root Certificate Authority 2018, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US>
<CN=thawte Primary Root CA — G3, OU=»(c) 2008 thawte, Inc. — For authorized use only», OU=Certification Services Division, O=»thawte, Inc.», C=US>
<CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US>
<CN=GeoTrust Global CA, O=GeoTrust Inc., C=US>
<CN=DigiCert Trusted Root G4, OU=www.digicert.com, O=DigiCert Inc, C=US>
<CN=DST Root CA X3, O=Digital Signature Trust Co.>
<CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA — R3>
<CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE>
<CN=AAA Certificate Services, O=Comodo CA Limited, L=Salford, ST=Greater Manchester, C=GB>
<CN=ISRG Root X1, O=Internet Security Research Group, C=US>
<CN=Starfield Root Certificate Authority — G2, O=»Starfield Technologies, Inc.», L=Scottsdale, ST=Arizona, C=US>
<CN=GlobalSign Root CA, OU=Root CA, O=GlobalSign nv-sa, C=BE>
<CN=COMODO RSA Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB>
<OU=Starfield Class 2 Certification Authority, O=»Starfield Technologies, Inc.», C=US>
<CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US>
<CN=GTE CyberTrust Global Root, OU=»GTE CyberTrust Solutions, Inc.», O=GTE Corporation, C=US>
<CN=thawte Primary Root CA, OU=»(c) 2006 thawte, Inc. — For authorized use only», OU=Certification Services Division, O=»thawte, Inc.», C=US>
<CN=SecureTrust CA, O=SecureTrust Corporation, C=US>
<CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA — R2>
<OU=Class 3 Public Primary Certification Authority, O=»VeriSign, Inc.», C=US>
<CN=Certum CA, O=Unizeto Sp. z o.o., C=PL>
<CN=DigiCert High Assurance EV Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US>
<CN=Entrust.net Certification Authority (2048), OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), O=Entrust.net>
<CN=Go Daddy Root Certificate Authority — G2, O=»GoDaddy.com, Inc.», L=Scottsdale, ST=Arizona, C=US>
<CN=StartCom Certification Authority, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL>
<CN=USERTrust RSA Certification Authority, O=The USERTRUST Network, L=Jersey City, ST=New Jersey, C=US>
<OU=Go Daddy Class 2 Certification Authority, O=»The Go Daddy Group, Inc.», C=US>
<CN=GlobalSign, O=GlobalSign, OU=GlobalSign ECC Root CA — R5>
<CN=Certum Trusted Network CA, OU=Certum Certification Authority, O=Unizeto Technologies S.A., C=PL>
<CN=DigiCert Assured ID Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US>
<CN=GeoTrust Primary Certification Authority — G3, OU=(c) 2008 GeoTrust Inc. — For authorized use only, O=GeoTrust Inc., C=US>
<CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE>
Поскольку речь о «CN=Минкомсвязь России», то, скорее всего, цепочка сертификатов длиной более 2 сертификатов, а в вашем ключевом контейнере 62769612@2022-05-16-AO SPORTBET_copy есть только один сертификат — сертификат подписи, и его издатель (промежуточный центр) не подходит в качестве довереннего, т.к. его нет в списке (в списке только корневые).
То есть в ключевом контейнере 62769612@2022-05-16-AO SPORTBET_copy должна быть вся цепочка сертификатов клиента: вам необходимо установить полную цепочку (p7b) сертификатов клиента в 62769612@2022-05-16-AO SPORTBET_copy.
2. Нужно определиться, работаете ли вы с JCP или JCSP (+ CSP).
Из дистрибутива jcp-2.0.41789 нельзя установить JCSP — его там нет. Для JCSP нужен дистрибутив java-csp-x.y.zzzzz из раздела CSP сайта.
CSP должен быть 5.0, после установки в панели управления на вкладке «Алгоритмы» JCSP должен быть задан в качестве провайдера по умолчанию.
Отредактировано пользователем 7 июня 2022 г. 20:37:18(UTC)
| Причина: Не указана