Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline mnsold  
#1 Оставлено : 8 февраля 2017 г. 11:48:41(UTC)
mnsold

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.02.2017(UTC)
Сообщений: 9
Российская Федерация

Всем привет!

JCP стали использовать не так давно, не скажу что силен в вопросе использования JCP и JAVA.
Подскажите куда дальше копать по настройке JCP + GlassFish.

На данный момент столкнулся с ошибкой:
Код:
java.io.IOException: A MultiException has 2 exceptions.  They are:
1. java.lang.Error: java.security.KeyStoreException: Default store provider (keyStore) is SUN but default config provider (cpSSL) is JCP. Check settings on the tab 'Algorithms' of JCP Pane.
2. java.lang.IllegalStateException: Unable to perform operation: post construct on com.sun.enterprise.security.ssl.SSLUtils

        at org.glassfish.grizzly.config.ssl.JSSE14SocketFactory.init(JSSE14SocketFactory.java:162)
        at org.glassfish.grizzly.config.SSLConfigurator.initializeSSLContext(SSLConfigurator.java:249)
        at org.glassfish.grizzly.config.SSLConfigurator.configureSSL(SSLConfigurator.java:131)


Что собственно нужно:
В GlassFish д.б. веб-приложение, которое будет клиентом для сервиса, т.е. приложение умеет подписывать данные и отправлять их на сервис.
На данный сервис можно обратиться только по ГОСТ TLS, т.е по сути, в Glassfish не нужен отдельный https-listener, который умеет ГОСТ TLS, но Glassfish должен поддерживать его в качестве клиента, т.к. сервис работает только по нему.

Имеем:
JCP-2.0.39014
GlassFish Server Open Source Edition 4.1 (build 13)
jdk1.8.0_121
Ну и все это на Linux.

Что в итоге было сделано:

В jdk1.8.0_121 сняты экспортные ограничения


JCP-2.0.39014 успешно установлена в jdk1.8.0_121 со следующими опциями


В Glassfish успешно создан домен test через asadmin


Пытаюсь переключить консоль администратора на https, но получаю ошибку


Продолжение в следующем посте из за превышения размера сообщения ....
Offline mnsold  
#2 Оставлено : 8 февраля 2017 г. 11:51:33(UTC)
mnsold

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.02.2017(UTC)
Сообщений: 9
Российская Федерация

В логах Glassfish получаю ошибку java.security.KeyStoreException: Default store provider (keyStore) is SUN but default config provider (cpSSL) is JCP


Продолжение в следующем посте ...
Offline mnsold  
#3 Оставлено : 8 февраля 2017 г. 11:52:45(UTC)
mnsold

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.02.2017(UTC)
Сообщений: 9
Российская Федерация

Продолжение ошибки в логах Glassfish


Продолжение в следующем посте ...
Offline mnsold  
#4 Оставлено : 8 февраля 2017 г. 11:53:59(UTC)
mnsold

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.02.2017(UTC)
Сообщений: 9
Российская Федерация

Рядом стоит Glassfish 3.1.2.2 + jdk1.7.0_21 + jcp.1.0.54 + jtls.1.0.54, после выполнения аналогичных операций, в том числе перевод консоли администратора Glassfish на https выполняется успешно, консоль по https работает.
В Glassfish 3, если зайти по https в админскую консоль и посмотреть в браузере сертификат, то указан алгоритм подписи сертификата PKCS #1 SHA-256 с шифрованием RSA, соединение зашифровано по TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA.

В настройке домена Glassfish 4, файл domain.xml указано


По сути, после перевода админской консоли на https, к слушателю admin-listener должна добавиться похожая запись, говорящая какой класс и сертификат использовать


Сертификат s1as (из настройки admin-listener) есть cacerts.jks и keystore.jks, для примера


В документации к JCP описывается настройка для слушателя http-listener-2 (в дистрибутиве лежит тут Doc\WebServerIntegration\Glassfish\Howto_set_gost_tls_glassfish4.docx).
Но по сути мне не нужен слушатель ГОСТ TLS на http-listener-2, а какую ЭП использовать и пути к хранилищу с ЭП и доверенных сертификатов и пароли к ним указываются в настройках веб-приложения.
В такой конфигурации сейчас веб-приложение работает в связке Glassfish 3.1.2.2 + jdk1.7.0_21 + jcp.1.0.54 + jtls.1.0.54.

При обращении на порт 8022 Glassifish (заданный при создании домена http.ssl.port=8022) и висящий на http-listener-2 получаю аналогичную ошибку



Подскажите, куда смотреть для решения проблемы в Glassfish 4?

Сорри за вопрос в нескольких постах.
Большое спасибо.

Отредактировано пользователем 8 февраля 2017 г. 12:16:21(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#5 Оставлено : 8 февраля 2017 г. 14:02:14(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Здравствуйте.
Не понятно, вы ошибку когда получаете? Когда клиентом пытаетесь подключиться к серверу (ГОСТ) по https? Или когда открываете консоль админа по https? Для нее настроен ГОСТ TLS?

Код:

Caused by: java.security.KeyStoreException: Default store provider (keyStore) is SUN but default config provider (cpSSL) is JCP. Check settings on the tab 'Algorithms' of JCP Pane
        at ru.CryptoPro.ssl.r.<init>(Unknown Source)
        at ru.CryptoPro.ssl.KeyManagerFactoryImpl.engineInit(Unknown Source)
        at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:256)
        at com.sun.enterprise.security.ssl.impl.SecuritySupportImpl.getKeyManagers(SecuritySupportImpl.java:324)
        at com.sun.enterprise.security.ssl.SSLUtils.getKeyManagers(SSLUtils.java:198)
        at com.sun.enterprise.security.ssl.SSLUtils.getSSLContext(SSLUtils.java:148)


В 2.0 была добавлена проверка: если создается SSLContext, которому передали KeyStore с провайдером НЕ JCP или JCSP, то бросаем указанную ошибку. В данном случае где-то вызывается создание SSLContext и ему передается KeyStore с провайдером SUN.
Offline mnsold  
#6 Оставлено : 8 февраля 2017 г. 14:20:50(UTC)
mnsold

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.02.2017(UTC)
Сообщений: 9
Российская Федерация

Получаю данную ошибку в 2х случаях:
1. Пытаюсь переключить консоль администратора на https, просто выполняю в bash
Код:
./asadmin --host localhost --user admin --port 8020 enable-secure-admin
Enter admin password for user "admin"> 
Command enable-secure-admin not found. 
Check the entry of command name. This command may be provided by a package that is not installed.
Closest matching local and remote command(s): 
    enable-secure-admin
    enable-secure-admin-internal-user
    enable-secure-admin-principal
Command enable-secure-admin failed.

т.е. по https на консоль админа еще обращаюсь, типа http://servername:8020, т.к. сначала ее нужно переключить в https

2. Когда обращаюсь к серверу по https, типа https://servername:8022, там должна открыться страничка типа "Your server is now running",
https без ГОСТ настроен на порту 8022 на отдельном слушателе http-listener-2, в то же время на Glassfish 3.1.2.2 + jdk1.7.0_21 + jcp.1.0.54 + jtls.1.0.54 все работает
Код:
          <protocol name="http-listener-2" security-enabled="true">
            <http max-connections="250" default-virtual-server="server">
              <file-cache></file-cache>
            </http>
            <ssl ssl3-enabled="false" classname="com.sun.enterprise.security.ssl.GlassfishSSLImpl" cert-nickname="s1as"></ssl>
          </protocol>

Offline mnsold  
#7 Оставлено : 8 февраля 2017 г. 14:33:44(UTC)
mnsold

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.02.2017(UTC)
Сообщений: 9
Российская Федерация

Цитата:
Не понятно, вы ошибку когда получаете? Когда клиентом пытаетесь подключиться к серверу (ГОСТ) по https?

Веб-приложение, которое является клиентом и будет подключаться к серверу (ГОСТ) по https еще не установлено, сначала нужно попасть в консоль администратора.
Т.е. фактически, я создал новый домен, и пытаюсь переключить консоль администратора на протокол https, чтобы потом туда зайти.

Отредактировано пользователем 8 февраля 2017 г. 14:34:30(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#8 Оставлено : 8 февраля 2017 г. 14:48:47(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Попробуйте проверить следующее: в файле <JRE>/lib/security/java.security есть строки (JRE - та, на которой запускается сервер)
Код:

ssl.KeyManagerFactory.algorithm=GostX509
ssl.TrustManagerFactory.algorithm=GostX509
ssl.SocketFactory.provider=ru.CryptoPro.ssl.SSLSocketFactoryImpl
ssl.ServerSocketFactory.provider=ru.CryptoPro.ssl.SSLServerSocketFactoryImpl

Закомментируйте их и попробуйте зайти в консоль администратора.
P.S. ИЗ Doc\WebServerIntegration\Glassfish\Howto_set_gost_tls_glassfish4.docx ничего не настраивали?
Offline mnsold  
#9 Оставлено : 8 февраля 2017 г. 15:03:39(UTC)
mnsold

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.02.2017(UTC)
Сообщений: 9
Российская Федерация

Если строчки закомментировать, то переключение проходит успешно, после этих команд могу зайти в консоль администратора на https://servername:8020

Код:
./asadmin --host localhost --user admin --port 8020 enable-secure-admin
Enter admin password for user "admin"> 
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.

./asadmin stop-domain test
Waiting for the domain to stop .
Command stop-domain executed successfully.

./asadmin start-domain test
Waiting for test to start ...
Successfully started the domain : test
domain  Location: /data/glassfish/4/glassfish/domains/test
Log File: /data/glassfish/4/glassfish/domains/test/logs/server.log
Admin Port: 8020
Command start-domain executed successfully.


В domain.xml к слушателю admin-listener добавилась настройка после включения https на нем
Код:
          <protocol name="sec-admin-listener" security-enabled="true">
            <http encoded-slash-enabled="true" default-virtual-server="__asadmin">
              <file-cache></file-cache>
            </http>
            <ssl classname="com.sun.enterprise.security.ssl.GlassfishSSLImpl" client-auth="want" cert-nickname="s1as"></ssl>
          </protocol>
          <protocol name="admin-http-redirect">
            <http-redirect secure="true"></http-redirect>
          </protocol>


Цитата:
P.S. ИЗ Doc\WebServerIntegration\Glassfish\Howto_set_gost_tls_glassfish4.docx ничего не настраивали?

Не настраивал, т.к. не нужен слушатель с https ГОСТ.

И в связке Glassfish 3.1.2.2 + jdk1.7.0_21 + jcp.1.0.54 + jtls.1.0.54 тоже не настраивал glassfish.
И в jdk1.7.0_21/jre/lib/security/java.security данные строчки тоже есть, и они не закомментированы:
Код:
grep -E 'SocketFactoryImpl|GostX509' java.security
ssl.KeyManagerFactory.algorithm=GostX509
ssl.TrustManagerFactory.algorithm=GostX509
ssl.SocketFactory.provider=ru.CryptoPro.ssl.SSLSocketFactoryImpl
ssl.ServerSocketFactory.provider=ru.CryptoPro.ssl.SSLServerSocketFactoryImpl

Отредактировано пользователем 8 февраля 2017 г. 15:18:31(UTC)  | Причина: Не указана

Offline mnsold  
#10 Оставлено : 8 февраля 2017 г. 17:52:30(UTC)
mnsold

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.02.2017(UTC)
Сообщений: 9
Российская Федерация

Подскажите, закомментировав эти 4 строчки чего лишаемся? Они раньше были в jdk1.7.0_21, но не мешали работе. Или ничего не лишаемся, просто убираем некоторые проверки?
Например, если в последующем понадобится поднять слушатель в Glassfish с ГОСТ https, без этих строчек это можно будет сделать?
Поясните пожалуйста.


RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (4)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.