Keystore Alias ​​Null Error - PullRequest
       68

Keystore Alias ​​Null Error

2 голосов
/ 12 января 2012

Я пытаюсь настроить продукт под названием Hermes для цифровой подписи.

У меня есть файл MyCert.pfx, который я указал в его конфигурации следующим образом:

<component id="keystore-manager-for-signature" name="Key Store Manager for Digital Signature">
    <class>hk.hku.cecid.piazza.commons.security.KeyStoreManager</class>
    <parameter name="keystore-location" value="/opt/mycompany/certs/MyCert.pfx"/>
    <parameter name="keystore-password" value="12345678"/>
    <!-- parameter name="key-alias" value="joeblank"/-->
    <!-- parameter name="key-password" value="12345678"/-->
    <parameter name="keystore-type" value="PKCS12"/>
    <parameter name="keystore-provider" value="org.bouncycastle.jce.provider.BouncyCastleProvider"/>
</component>

Гермес выдает исключение, подобное этому:

hk.hku.cecid.ebms.spa.task.MessageValidationException: Cannot sign the ebxml message
    by hk.hku.cecid.ebms.pkg.SignatureException: [10204] Cannot sign message Exception: java.lang.NullPointerException Message: null
    Try to retreive key alias[null] from keystore[/opt/mycompany/certs/MyCert.pfx]
    by java.lang.NullPointerException

У меня нет псевдонима для файла pfx. Мне не нужно было указывать один, когда я использовал его в Tomcat в server.xml.

Было также предложено использовать такую ​​команду для импорта сертификата в хранилище jsk:

keytool -importkeystore -deststorepass [password] -destkeystore [JKS keystore file] -deststoretype JKS -destalias [alias] -srckeystore [p12 keystore file] -srcstoretype PKCS12 -srcstorepass [password] -srcalias [alias]

Мне пришлось удалить часть -srcalias, поскольку у меня ее не было, что потребовало от меня удаления также и -destalias. Так что в этом случае у меня нет известного псевдонима для ссылки в mycompany.jks

В любом случае, у меня нет псевдонима. Я попытался импортировать файл pfx, используя keytool -import, но это выдает «Ввод не сертификат X.509».

Что вы, ребята, предлагаете мне попробовать дальше?

1 Ответ

2 голосов
/ 12 января 2012

Похоже, что ваше приложение не использует значение по умолчанию alias, если ни одно не указано.Приложения / библиотеки (включая Apache Tomcat) довольно часто выбирают первый псевдоним, который они находят, когда ни один не указан.Однако, вам, кажется, нужен один.

Вы можете найти его, используя keytool -list -storetype PKCS12 -keystore (при необходимости, используйте -v, чтобы увидеть псевдоним более четко).Имя псевдонима должно быть первой частью строки, которая говорит что-то вроде 2, Jan 12, 2012, PrivateKeyEntry (здесь "2"), прямо перед отпечатком.

keystore -import действительно только для сертификатов.

keytool -importkeystore можно использовать для преобразования хранилища PKCS # 12 в хранилище JKS, но оно вам не нужно, поскольку вы можете указать тип PKCS12.

...