Имате проблеми с настройването на хранилище за ключове за подписване на код в linux

Опитвам се да настроя хранилището за ключове за подписване на код на нашия сървър за изграждане на Linux и имам проблеми с това. Предистория: Използваме и двете Netbeans IDE за разработване на приложение, което пускаме както като jar файл, така и като exe (с вграден JRE, за да избегнем проблеми със съвместимостта). Разработката се извършва на нашите компютри с Windows 7, но сървърът за изграждане се хоства на сървър за изграждане на linux. Използваме Ant. Проблем: Трябва да настроя хранилището за ключове, така че същият Ant build.xml да генерира подписания jar файл (и exe файл) на моя компютър, както и да мога да генерирам същия подписан jar и exe файл на сървъра за изграждане . Получих pfx файл на отдела от нашия ИТ, както и междинен и основен сертификат. Тези 3 артикула ТРЯБВА да предоставят пълната верига (мисля). Опитах различни начини да ги импортирам в нашия компютър с Linux без успех. Използвах openssl за извличане на сертификата pem и частния ключ pem от pfx и се опитах да ги импортирам в новосъздадения файл .keystore на компютъра с linux, но все още не мога да накарам нито jarsigner да подпише jar, нито signtool да подпише екз. когато пиша: jarsigner -keystore .keystore .jar ... получавам ... jarsigner: Веригата на сертификата не е намерена за: daqkey. daqkey трябва да препраща към валиден ключ на KeyStore, съдържащ частен ключ и съответна верига от сертификати за публичен ключ. Как мога да проверя дали частният ключ на хранилище за ключове има правилна верига от сертификати? Опитах командата keytool -list, но не знам какво търся в резултатния изход. Може ли някой да помогне?

ПОВЕЧЕ ПОДРОБНОСТИ: след като използвах jarsigner, за да се опитам да подпиша jar файл, получавам тези резултати: smk 5763 четвъртък, 6 август 10:54:02 CDT 2015 com/nov/cp/daqconfigtool/resources/log-configuration.xml

  X.509, CN="myCompanyName", O="myCompanyName", L=Houston, ST=Texas, C=US (daqkey)
  [certificate is valid from 3/31/15 10:11 AM to 4/1/16 4:18 AM]
  X.509, CN=Entrust Code Signing Certification Authority - L1D, OU="(c) 2009 Entrust, Inc.", OU=www.entrust.net/rpa is incorporated by reference, O="Entrust, Inc.", C=US
  [certificate is valid from 11/11/11 9:29 AM to 11/11/21 9:28 PM]
  X.509, 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
  [certificate is valid from 3/23/09 10:18 AM to 3/23/19 10:48 AM]
  X.509, CN=Entrust.net Secure Server Certification Authority, OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), O=Entrust.net, C=US
  [certificate is valid from 5/25/99 11:09 AM to 5/25/19 11:39 AM]

  [entry was signed on 8/7/15 9:21 AM]
  X.509, CN="myCompanyName", O="myCompanyName", L=Houston, ST=Texas, C=US (daqkey)
  [certificate is valid from 3/31/15 10:11 AM to 4/1/16 4:18 AM]
  [CertPath not validated: Path does not chain with any of the trust anchors]

Някакви идеи?


person Romeo Riojas    schedule 10.08.2015    source източник
comment
Трябва да можете да подпишете с pfx директно.   -  person Mick Mnemonic    schedule 10.08.2015
comment
Опитах вашето предложение (или всъщност стъпките във връзката). Наистина „изглежда“ работех и ми даде отговор „jar verified“ в командния ред, но когато гледах свойствата в Windows, нямаше раздел Цифров подпис. Не беше подписано. И определено беше един и същ файл (опитах го два пъти, за да се уверя, че всички пътища са правилни и т.н.)   -  person Romeo Riojas    schedule 10.08.2015
comment
Повече информация (и повече главоболия): Разгледах съдържанието на *.pfx файла на нашия Корпоративен отдел. Той съдържа един PrivateKeyEntry и верига от сертификати за 4 записа. 2 са етикетирани като SHA256 с RSA, а другите 2 като SHA1 с RSA. Като оценявам полетата SubjectKeyIdentifier и AuthorityKeyIdenfier на всеки от четирите записа в сертификата, мога да видя, че всеки ключ на субект на сертификат сочи чрез своя ключ за пълномощия към друг запис в сертификат. PrivateKeyEntry сочи към един от сертификатите, а последният сертификат сочи към себе си. Но не мога да импортирам веригата сертификати в хранилището си за ключове.   -  person Romeo Riojas    schedule 12.08.2015
comment
Разделът за подпис в свойствата на Windows FileExplorer е само за подписи за автентичен код във формат на Microsoft на изпълними файлове (.exe, .dll, каквото и dotnet да използва тази година). Той не знае за jar подписи. Ако jarsigner -verify го харесва и особено ако jarsigner -verify -verbose показва smk за вашите записи, той е подписан. Ако искате .exe да е подписан, имате нужда от инструмент, различен от jarsigner, но не знам какъв; Бих започнал да търся в близост до инструмента, който създава .exe.   -  person dave_thompson_085    schedule 14.08.2015
comment
Освен това Java поддържа няколко формата на хранилище за ключове и PKCS#12 е хранилище за ключове; но ако искате специално хранилище за ключове във формат JKS, можете да конвертирате с keytool -importkeystore -srckeystore p12file -srcstoretype pkcs12 -destkeystore jksfile (не е необходимо да указвате -deststoretype jks, защото е по подразбиране). Както за PKCS#12, така и за JKS, keytool -list -v (обърнете внимание на -v) ще ви покаже пълната верига от сертификати за записа PrivateKey (или всеки запис, ако е повече от един, което е рядко).   -  person dave_thompson_085    schedule 14.08.2015
comment
@dave_thompson_085: Благодаря. Това наистина помага. Да, знаех, че използвате само jarsigner за подписване на jar файлове, и планирах да използвам знаковия код на Mono за подписване на нашия exe. Все още се опитвам да определя дали нашето хранилище за ключове е завършено. Горното съобщение за грешка изглежда показва, че не е (т.е. - CertPath не е валидиран. Пътят не се свързва с никоя от надеждните котви.   -  person Romeo Riojas    schedule 14.08.2015