powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Подписание закрытым ключем .pem.
4 сообщений из 4, страница 1 из 1
Подписание закрытым ключем .pem.
    #37882752
ochoba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

У меня имеется закрытый ключ keyfile.pem. Нужно организовать подписание им файла средствами явы.
Вот мои попытки поиметь решение этой задачи:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public Certificate loadSertificateFromFile(String path)
			throws FileNotFoundException, CertificateException {
		FileInputStream is = new FileInputStream(path);

		CertificateFactory cf = CertificateFactory.getInstance("X.509");
		java.security.cert.Certificate cert = cf.generateCertificate(is);
		return cert;
}
                
public byte[] sign(byte[] data) throws GeneralSecurityException, CMSException, IOException {
		  Security.addProvider(new BouncyCastleProvider());
		  CMSSignedDataGenerator generator = new CMSSignedDataGenerator();

		  X509V1CertificateGenerator certGen = new X509V1CertificateGenerator();
		  X509Certificate cert = (X509Certificate) loadSertificateFromFile("keyfile.pem");;

		  generator.addSigner(key, cert, CMSSignedDataGenerator.DIGEST_SHA1);
		  generator.addCertificatesAndCRLs(getCertStore(cert));
		  
		  CMSProcessable content = new CMSProcessableByteArray(data);
		  CMSSignedData signedData = generator.generate(content, true, "BC");
		  return signedData.getEncoded();
}



Но в случае использования keyfile.pem я получаю исключение:
Код: java
1.
2.
3.
4.
5.
java.security.cert.CertificateException: Unable to initialize, java.io.IOException: DerInputStream.getLength(): lengthTag=58, too big.
	at sun.security.x509.X509CertImpl.<init>(Unknown Source)
	at sun.security.provider.X509Factory.engineGenerateCertificate(Unknown Source)
	at java.security.cert.CertificateFactory.generateCertificate(Unknown Source)
	at util.x509.loadSertificateFromFile(x509.java:47)



Это все наводит меня на мысль, что нужно гуглить, какой формат ключей должен тут использоваться. И гугл подсказывает, что надо бы использовать формат der или cert.
Я пробую с помощью openssl сконвертировать свой ключ в один из этих форматов и получаю ошибку:

openssl x509 -inform pem -in keyfile.pem -outform der -out keyfile.der

unable to load certificate
4280:error:0906D06C:PEM routines:PEM_read_bio:no start line:./crypto/pem/pem_lib
.c:647:Expecting: TRUSTED CERTIFICATE
error in x509

Ожидает он доверенный сертификат, а не ключ. Сертификат у меня есть, его выдали на запрос, сгенерированный одновременно с этим закрытым ключом. Но ведь в сертификате содержится только открытый ключ, и мне он сейчас не нужен.

И вот тут я решаю спросить форум, где я ошибся?
Я могу подписывать pem-ключом из Явы? Может есть другие, более лучшие библиотеки для этого? Может я неправильно конвертирую ключ? Может в сертификат, что мне выдали, нужно как-то добавить мой закрытый ключ, и работать уже с этим сертификатом?
Подскажите, кто чем может, я в Яве, как и в криптухе не очень силен.
...
Рейтинг: 0 / 0
Подписание закрытым ключем .pem.
    #37882961
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ochoba,

А что мешает создать хранилище ключей с парой "открытый/ закрытый" посредством утилиты keytool , входящей в JDK и подписать *.jar утилитой jarsigner , также входящей в комплект?
...
Рейтинг: 0 / 0
Подписание закрытым ключем .pem.
    #37883756
ochoba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подписывать мне нужно в коде, символьный массив.
Файлик JKS я поимел, приватный ключ из него тоже, сейчас ищу, как лучше подписывать.
...
Рейтинг: 0 / 0
Подписание закрытым ключем .pem.
    #37888107
Фотография nexoma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
доверенный сертификат и закрытый ключ должны быть в хранилище.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Подписание закрытым ключем .pem.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]