[obejście problemu istnieje] JOSM zaniemógł przy warstwach Geoportalu

Java (JOSM) kończy handshake TLS odrzucając Server Hello Geoportalu alertem Certificate Unknown (46), czyli (RFC 8446):

Some other (unspecified) issue arose in processing the certificate, rendering it unacceptable.

Piszę o tym, bo openssl s_client (czy też np. curl) ma inny problem:

OpenSSL/3.0.8: error:0A000152:SSL routines::unsafe legacy renegotiation disabled

i kończy handshake alertem Handshake Failure (40), czyli:

indicates that the sender was unable to negotiate an acceptable set of security parameters given the options available.

Z kolei Firefox i Chromium jakoś sobie radzą.

1 Like

Według podanego wyżej testu SSL Labs Java też sobie radzi, więc wciąż nie jest przekonany… Niestety, nie mogę sobie przypomnieć, na czym problem polegał poprzednim razem, mam wrażenie, że coś poprawiali w swojej konfiguracji wskutek moich starań, ale może zmyślam :smiley:

Przypominam o Help → Report bug w JOSMie :slight_smile:

Tylko że cały czas sugeruję, że to nie jest błąd JOSM-a ani Javy.

Tez tak sadze. Orto Wroclawia nadal dziala bez problemu.

Z tego co sprawdziłem/zrozumiałem certyfikat dostarczany przez serwer Geoportalu nie zawiera wszystkich nadrzędnych certyfikatów. Dokładnie to są 2 “wyższe”, brakuje tego środkowego (przeglądarka potrafi go sobie dociągnąć).

Można go pobrać ze strony Certum. To będzie:

The Commercial SSL (or its MultiDomain/Wildcard options)

Certum Domain Validation CA SHA2
Serial No:26ddd22b46c9c44d5a694d39807e72ad
Valid from:‎2014-09-11 12:00:00 GMT
Expiry date:2027-06-09 10:46:39 GMT

https://www.certum.eu/en/cert_expertise_root_certificates/#id5

Można też skorzystać z przeglądarki - i Firefox i Chrome mają taką funkcję.

Po dodaniu klucza ręcznie do keystore powinno być ok - sprawdzałem to curlem:

$ curl https://mapy.geoportal.gov.pl

curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

A z certyfikatem działa bez błędów.

$ curl --cacert /tmp/dvcasha2.pem https://mapy.geoportal.gov.pl

Teraz jeszcze niech ktoś mi powie jak dodać certyfikat z pliku do zaufanych w Javie, bo sam nie umiem.
To chyba nie jest błąd w Josm, tylko “lack of support” w jakiejś libce.

1 Like

Potwierdzam, dodanie do zaufanych certa Certum Domain Validation CA SHA2 rozwiązuje problem.

Na Ubuntu Java wykorzystuje systemowy truststore. Na Windowsie… bodaj gdzieś w instalacji Javy jest truststore, na którym można operować narzędziem keytool.

1 Like

Z użyciem keytool zrobiłem to tak:

  1. Dodać certyfikat do keytool:
    $ keytool -import -alias geoportalCertum -keystore /tmp/keystore -file /tmp/dvcasha2.der
  2. Odpalać JOSM z podlinkowanym tym keystore (w tym przykładzie ustawiłem hasło “123456”):
    $ java -Djavax.net.ssl.trustStore=/tmp/keystore -Djavax.net.ssl.trustStorePassword=123456 -jar ...

ale nie działa wtedy żaden inny certyfikat oprócz tego - może komuś to pomoże dokończyć to rozwiązanie. Jest o tyle lepsze, że nie dodajemy do systemu na stałe dodatkowego certyfikatu.

1 Like

Jeśli chcemy zmieniać, jak JOSM się odpala, to uruchomienie tej funkcjonalności, która na podstawie certyfikatu przedstawionego przez serwer dociąga brakujący certyfikat pośredni (obsługa rozszerzenia Authority Information Access - CA Issuers), powinna zadziałać. Wystarczy dodać -Dcom.sun.security.enableAIAcaIssuers=true do opcji uruchomienia Javy. Niestety, swoje lokalne środowisko doprowadziłem do stanu, w którym nie mogę tego teraz przetestować.

Edit: udało się przetestować, to rozwiązanie też działa.

3 Likes

Wysłałem email do GUGiK w tej sprawie jak by nie zostało to u nich automatycznie wykryte.

1 Like

Bazując na wszystkich informacjach może to kwestia tego że certificate chain nie jest kompletny i wymaga on dodatkowego pobrania? Na ssl labs jest ostrzeżenie o tym na górze też.

A insecure renegotiation to problem który na geoportalu jest od dłuższego czasu i wcześniej działało.

No i inne aplikacje sobie radzą bo mogą go w miarę automatycznie pobrać. Geoportal powinien wysłać całkowity chain a nie tylko częściowy (dla pełnej kompatybilności).

Zgadza się, i opcja enableAIAcaIssuers, którą przywołałem, włącza właśnie to dociąganie pośredniego certyfikatu, co jest w Javie akurat domyślnie wyłączone.

Pisałem w takiej sprawie już kiedyś, albo do GUGiK-u albo do warszawskiej geodezji (nie pamiętam :confused: ), i poprawili, więc dobrze, że @NieWnen dał znać, jest duża szansa, że zadziałają.

Tak, to jest ten problem, który powoduje, że nowsze wersje OpenSSL-a nie chcą się łączyć jak wyżej u @gscscnd, ale przeglądarki ani Java na razie nie krzyczą z tego powodu.

@Marek_P włączył dla pierwszej wiadomości Tryb Wiki, a ja jako pierwszy ją edytowałem. Teraz każdy może do niej dopisać rozwiązanie.
Nie widziałem wcześniej tej funkcji w użyciu, zobaczymy jak się sprawdzi.

Czy możecie podać jakieś łopatologiczne obejście dla szarego użytkownika Win10?

Dodałem w pierwszym poście rozwiązanie, które znalazłem na kanale OSM na Discordzie. U mnie na Windows 10 działa. Tę dodatkową linijkę dodałem na samym końcu w pliku JOSM.cfg

2 Likes

Nie tylko JOSM padł, w Vespuccim też przestało działać.

EveryDoor chyba też.

Na Androidzie można zainstalować certyfikat z pliku, .der z podanego wyżej linka powinno dać się przez systemowe Ustawienia. A docelowo albo GUGiK przekonfiguruje, albo w każdej z aplikacji trzeba włączyć Authority Information Access (AIA) Extension.

BTW androidowa aplikacja Geoportal też nie działa.

Szanowny Panie,

Dziękujemy za zgłoszenie, faktycznie problem z usługami związany był z certyfikatami. W wyniku złego parsowania certyfikatu przez jedno z urządzeń bezpieczeństwa pełen chain nie był prezentowany dla użytkowników. Problem został rozwiązany przez obszar bezpieczeństwa.

Koniec problemu.

8 Likes