Доступ к внешним ресурсам из java приложения

Olej

New member
Сообщения
1 307
#21
Если использовать гос-java, то проблема аналогичная
Интересно...
Уже не раз в форуме писалось:
Не запускается java-приложение
В SE нет java, там только пакет "заглушка"
1.6 Смоленск: заглушка вместо OpenJDK на диске разработчика ?
В почте техподдержка говорит, что "Данные пакеты были добавлены в состав дистрибутива по зависимостям и не содержат JRE"
А что там с Java?
Java в составе Astra Linux SE - это пустая заглушка, неработоспособная, помещённая туда для красоты.
Т.е. у ТС (который загадочным образом пропал ;)... чтобы спросить) принципиально не может быть Java, ни в одной из общепринятых ипостасей: ни Open JDK, ни Oracle JDK.
А может быть (в той самоидентификации пакета как Java 1.8) только один из JDK (из 2-х), модифицированных "Лаборатория 50".
Вот это - Open JDK, но это Open JDK установленный из репозитория "Лаборатория 50":

Код:
olej@astra:~$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
Но это не тот Open JDK, который мы находим в Debian, Mint или Fedora... да и в Astra Linux CE (Орёл).
И поведение инсталляций Open JDK в Astra Linux SE отличается от поведения того же кода в других общеупотребимых дистрибутивах.
 
Последнее редактирование:

Olej

New member
Сообщения
1 307
#22
Код:
olej@astra:~$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b01-1~deb9u1-b01)
OpenJDK 64-Bit Server VM (build 25.212-b01, mixed mode)
Как легко видеть, это совсем другая сборка, по сравнению с Open JDK Astra Linux SE 1.6 (сравните с пред. сообщением)
Откомпилирую тот же тестовый код ТС:
Код:
olej@astra:~/WORK$ javac ua.java

olej@astra:~/WORK$ ls -l *.class
-rw-r--r-- 1 olej olej 1260 Ноя 18 14:15 ua.0.class
-rw-r--r-- 1 olej olej 1272 Ноя 20 17:19 ua.class
Здесь 1-й файл - это байт-код откомпилированный ранее в SE, а 2-й - только-что в CE.
Код:
olej@astra:~/WORK$ file ua.class
ua.class: compiled Java class data, version 52.0 (Java 1.8)

olej@astra:~/WORK$ file ua.0.class
ua.0.class: compiled Java class data, version 55.0
 

Olej

New member
Сообщения
1 307
#23
Но это не тот Open JDK, который мы находим в Debian, Mint или Fedora... да и в Astra Linux CE (Орёл).
И сравним выполнение одного и того же кода (это практически код ТС, чтобы не уходить далеко от) в CE и SE ... при доступе к одному и тому же HTTPS ресурсу:
Код:
olej@astra:~/WORK$ lsb_release -a
No LSB modules are available.
Distributor ID: AstraLinuxCE
Description:    Astra Linux CE 2.12.21 (Orel)
Release:        2.12.21
Codename:       orel

olej@astra:~/WORK$ java ua https://httpbin.org/get
{  "args": {},   "headers": {    "Accept": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2",     "Host": "httpbin.org",     "User-Agent": "Java/1.8.0_212"  },   "origin": "193.28.177.125, 193.28.177.125",   "url": "https://httpbin.org/get"}
Код:
olej@astra:~/WORK/User-Agent$ lsb_release -a
No LSB modules are available.
Distributor ID: AstraLinuxSE
Description:    Astra Linux SE 1.6 (Smolensk)
Release:        1.6
Codename:       smolensk

olej@astra:~/WORK/User-Agent$ java ua https://httpbin.org/get
Exception in thread "main" javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1921)
        at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1904)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1420)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
        at ua.getHTML(ua.java:10)
        at ua.main(ua.java:20)
...
Итог разительно разный!
 

Olej

New member
Сообщения
1 307
#24
Т.е. у ТС (который загадочным образом пропал ;)... чтобы спросить) принципиально не может быть Java, ни в одной из общепринятых ипостасей: ни Open JDK, ни Oracle JDK.
А может быть (в той самоидентификации пакета как Java 1.8) только один из JDK (из 2-х), модифицированных "Лаборатория 50".
Вот это - Open JDK, но это Open JDK установленный из репозитория "Лаборатория 50":
Итог разительно разный!
Это вовсе не означает, что сборки JDK (наверное обе - Open JDK + гос-ява) хуже чем у OpenJDK Team <openjdk@lists.launchpad.net>, или ошибочная ... у меня нет никаких оснований то утверждать.
Просто они отличаются... и отличаются где-то в области защищённости, OpenSSL ...
Наверное сборка от "Лаборатория 50" больше соответствует ... их представлениям о прекрасном. :giggle:
 

Olej

New member
Сообщения
1 307
#25
Код:
olej@astra:~/WORK/User-Agent$ lsb_release -a
No LSB modules are available.
Distributor ID: AstraLinuxSE
Description:    Astra Linux SE 1.6 (Smolensk)
Release:        1.6
Codename:       smolensk

olej@astra:~/WORK/User-Agent$ java ua https://httpbin.org/get
Exception in thread "main" javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1921)
...
И вот для того, чтобы подстраховаться и удостовериться, сделаю чтение а). того же URL, б). так же HTTPS, в). на той же Astra Linux SE, г). в той же неизменно сетевой инфраструктуре ... но на языке Python:
Код:
olej@astra:~$ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> r = requests.get( 'https://httpbin.org/get' )
>>> print( r.status_code )
200
>>> print( r.text )
{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Host": "httpbin.org",
    "User-Agent": "python-requests/2.22.0"
  },
  "origin": "193.28.177.125, 193.28.177.125",
  "url": "https://httpbin.org/get"
}
Это в точности соответствует тому, что с этого URL читает Java приложение, но на Astra Linux CE.
Этот результат подтверждает что выбрасываемое runtime-исключение в Java приложении никак не обусловлено:
- защищённой системой Astra Linux SE;
- её сетевым стеком;
- никакими средствами защиты на пути сетевого трафика в системе, файерволами, правилами iptanles и т.п.
- никакими брандмауэрами и настройками на промежуточных хостах по всей трассе от localhost до URL
А обусловлено это исключительно сборкой + конфигурациями (может быть) JDK.
 
Последнее редактирование: