Мыльный клиент Java для веб-сервисов EJBCA

Я пытаюсь создать клиент Java Soap для вызова веб-сервисов Ejbca.

Я столкнулся с проблемой на уровне сертификата.

Exception in thread "main" org.ejbca.core.protocol.ws.AuthorizationDeniedException_Exception: Error no client certificate received used for authentication.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

Из моей установки я могу получить файл *.p12, как я могу сообщить своей программе Java, чтобы использовать этот файл для правильного вызова веб-службы.

Спасибо за вашу помощь.


person hbellahc    schedule 01.08.2018    source источник


Ответы (1)


В EJBCA есть инструмент под названием clientToolBox, который представляет собой утилиту командной строки, которая выполняет вызовы веб-сервиса. Это хороший инструмент для проверки функциональности WS. ClientToolBox также служит образцом кода для различных команд WS.

Чтобы узнать о проблеме с сертификатом клиента, вы можете проверить org.ejbca.core.protocol.ws.client.EJBCAWSRABaseCommand. В конструкторе есть код, который загружает файл p12 и устанавливает свойство java javax.net.ssl.keyStore и другие свойства.

final String keyStorePath = props.getProperty("ejbcawsracli.keystore.path", "keystore.jks");
checkIfFileExists(keyStorePath);
System.setProperty("javax.net.ssl.keyStore", keyStorePath);
if (keyStorePath.endsWith(".p12")) {
    System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
}
if ( trustStorePath==null  ) {
    if (keyStorePath.endsWith(".p12")) {
        final Provider tlsProvider = new TLSProvider();
        Security.addProvider(tlsProvider);
        Security.setProperty("ssl.TrustManagerFactory.algorithm", "AcceptAll");
    } else {
        System.setProperty("javax.net.ssl.trustStore", keyStorePath);
    }
}
System.setProperty("javax.net.ssl.keyStorePassword", password);

Свойства хранилища ключей описаны в документации по веб-службам для EJBCA: ">https://www.ejbca.org/docs/Web_Service_Interface.html#src-16224398_id-.WebServiceInterfacev6.12.0-UsingtheWebServiceAPIдляинтеграцииUsing_the_Web_Service_API_для_интеграции

Документацию для clientToolBox можно найти в документации: https://www.ejbca.org/docs/EJBCA_Client_Toolbox.html

person primetomas    schedule 06.08.2018
comment
Спасибо за помощь, по вашим рекомендациям все работает. - person hbellahc; 07.09.2018