WebServices + https
От: 6lackbird Россия  
Дата: 31.05.07 06:44
Оценка:
Имеется два апп сервера (JBoss), на которых развернуты web службы. Служба с первого сервера
периодически сбрасывает суммарную информацию на второй сервер.

Доступ ко второму серверу защищен посредством SSL

 <security-constraint>
        <web-resource-collection>
            <url-pattern>/center/*</url-pattern>

            <http-method>POST</http-method>
            <http-method>GET</http-method>

        </web-resource-collection>

        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>


В этом случае первый веб сервер выступает в качестве клиента. И вот тут наступает

Заданы свойства:
      URL url1 = Application.class.getResource("/client.keystore");
      System.setProperty("javax.net.ssl.keyStore",
                Application.class.getResource("/client.keystore").getFile());

      System.setProperty("javax.net.ssl.keyStorePassword", "123456");

      URL url2 = Application.class.getResource("/client.truststore");
      System.setProperty("javax.net.ssl.trustStore",
                Application.class.getResource("/client.truststore").getFile());
      System.setProperty("javax.net.ssl.trustStorePassword", "123456");

      String remoteEndpoint = "https://127.0.0.1:8443/monitoring/center/test";

Сообщение передается посредством SOAPConnection (saaj)

В итоге имеем:

Caused by: java.net.SocketException: Default SSL context init failed: null
    at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:163)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:372)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:836)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
    at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:282)

Поиск по google ничего вразумительного не дал


Тот же самый код, вызванный из standalone приложения, работает нормально
... << RSDN@Home 1.2.0 alpha rev. 668>>
"Мы будем уничтожать свое ядерное оружие вместе с Америкой" (c) Б. Ельцин
Re: WebServices + https
От: C0s Россия  
Дата: 31.05.07 09:04
Оценка:
Здравствуйте, 6lackbird, Вы писали:

6>Имеется два апп сервера (JBoss), на которых развернуты web службы

6> В этом случае первый веб сервер выступает в качестве клиента. И вот тут наступает

6> Заданы свойства:

6>      System.setProperty("javax.net.ssl.keyStore",
6>                Application.class.getResource("/client.keystore").getFile());

6>      System.setProperty("javax.net.ssl.keyStorePassword", "123456");

6>      System.setProperty("javax.net.ssl.trustStore",
6>                Application.class.getResource("/client.truststore").getFile());
6>      System.setProperty("javax.net.ssl.trustStorePassword", "123456");


6> В итоге имеем:


6>Caused by: java.net.SocketException: Default SSL context init failed: null


6> Тот же самый код, вызванный из standalone приложения, работает нормально


вряд ли аппсервер тебе позволит вот с такой необычайной лёгкостью поменять системные свойства, его политики безопасности обычно сильно отличаются от типичных для standalone.

по деплойменту могу предположить, что если второй аппсервер стоит "близко", то достаточно просто открыть второй канал доступа, незащищённый, но доступный "только внтури"
Re: WebServices + https
От: Blazkowicz Россия  
Дата: 31.05.07 09:05
Оценка:
Здравствуйте, 6lackbird, Вы писали:

6> Заданы свойства:


      URL url1 = Application.class.getResource("/client.keystore");
      System.setProperty("javax.net.ssl.keyStore",
                Application.class.getResource("/client.keystore").getFile());

В итоге имеем:

6>[java]

6>Caused by: java.net.SocketException: Default SSL context init failed: null
6> Тот же самый код, вызванный из standalone приложения, работает нормально

Подключись удаленным дебагом и посмотри что возвращают
Application.class.getResource("/client.keystore")
и
Application.class.getResource("/client.keystore").getFile()
Подозреваю что результат будет сюрпризом.
Re[2]: WebServices + https
От: 6lackbird Россия  
Дата: 31.05.07 09:36
Оценка:
Здравствуйте, C0s, Вы писали:

C0s>вряд ли аппсервер тебе позволит вот с такой необычайной лёгкостью поменять системные свойства, его политики безопасности обычно сильно отличаются от типичных для standalone.


C0s>по деплойменту могу предположить, что если второй аппсервер стоит "близко", то достаточно просто открыть второй канал доступа, незащищённый, но доступный "только внтури"


Между ними глобальная сеть, ака интернет
... << RSDN@Home 1.2.0 alpha rev. 668>>
"Мы будем уничтожать свое ядерное оружие вместе с Америкой" (c) Б. Ельцин
Re[2]: WebServices + https
От: 6lackbird Россия  
Дата: 31.05.07 09:40
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Подозреваю что результат будет сюрпризом.


А что там будет сюрпризом ...
url не нулевой, там дальше ко коду Assert.notNull стоит, так что с этим все в порядке

Пробовал жесткий путь к файлам сертификатов прописать, результат, с сожалению, тотже
... << RSDN@Home 1.2.0 alpha rev. 668>>
"Мы будем уничтожать свое ядерное оружие вместе с Америкой" (c) Б. Ельцин
Re[3]: WebServices + https
От: Blazkowicz Россия  
Дата: 31.05.07 10:15
Оценка:
Здравствуйте, 6lackbird, Вы писали:

6> Пробовал жесткий путь к файлам сертификатов прописать, результат, с сожалению, тотже

Сюрпризом может оказатся путь не к туда куда ожидается. Но еслия не прав, остается версия, предложеная C0s. Хотя я за JBoss никогда не замечал каких-то особых лимитов в секурити с настройками по умолчанию.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.