todvora / eet-client

Client and library for #EET communication - http://www.etrzby.cz/ , written in Java
MIT License
48 stars 26 forks source link

Remove BouncyCastle dependency #27

Closed todvora closed 7 years ago

todvora commented 7 years ago

The dependency has been introduced in earlier versions to handle manual handling of CRLs (see issue #21). It shouldn't be needed anymore and causes some troubles:

The BC dependency is removed now on the client-interface-changes branch and the change will reach 3.0.0-beta releases soon.

Please report any key / certificate related issues and problems, which could be affected by this change.

todvora commented 7 years ago

Released version 3.0.0-beta-7 without any BC dependency.

PavelCibulka commented 7 years ago

V Java 8 121 je nejaky bug a nejde nacist testovaci certifikat CZ683555118.p12. Ostatni certifikaty funguji. java.security.InvalidKeyException: Invalid RSA private key

Je to diskutovane i na: https://devel.cz/otazka/eet-certifikat-a-nova-verze-java-1-8-0-121

Myslim ze to neni potreba resit. Pisi jen kdyby na to nekdo narazil. S BouncyCastle funguje i tento certifikat.

todvora commented 7 years ago

Pokud jsem celý problém dobře pochopil, tak nejde o problém v JDK ale o to, že certifikát je v podstatě špatný. V JDK přidali kontroly, které certifikát důsledněji validují a odmítnou: http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/31dae74ad077#l5.14

Stejná situace nastává na OpenJDK i Oracle JDK ve verzi 1.8.0_121 a asi bych očekával, i podle vyjádření v ticketu, že se situace nezmění, naopak problém nastane i s novými releases pro Java 7. Původní problém, který tahle validace řeší, je pak nejspíš https://www.mail-archive.com/openssl-users@openssl.org/msg62149.html .

Chyba se v mém prostředí projevuje u dvou ze tří: CZ1212121218 i CZ683555118. Pouze CZ00000019 funguje v pořádku (náhodou?).

Výjimka, na které validace selže, je pak:

Caused by: java.security.InvalidKeyException: Invalid RSA private key
    at sun.security.rsa.RSAPrivateCrtKeyImpl.parseKeyBits(RSAPrivateCrtKeyImpl.java:206)
    at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:342)
    at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:356)
    at sun.security.rsa.RSAPrivateCrtKeyImpl.<init>(RSAPrivateCrtKeyImpl.java:91)
    at sun.security.rsa.RSAPrivateCrtKeyImpl.newKey(RSAPrivateCrtKeyImpl.java:75)
    at sun.security.rsa.RSAKeyFactory.generatePrivate(RSAKeyFactory.java:316)
    at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:213)
    ... 22 more
java.io.IOException: Invalid encoding: redundant leading 0s

Použít starší verzi javy nebo provider od BouncyCastle je pak spíš workaround a nikoliv řešení. Tím je podle mého jen přegenerovaný a správný klientský certifikát pro EET playground.

PavelCibulka commented 7 years ago

OK super

rds76 commented 7 years ago

Sice super, ale asi zustanu u puvodni BC a verzi 2.x, se kterou jsem aktualne velice spokojen (zahlaseno asi 4k trzbeb bez jedine chyby) Delat podobne zasahy den pred povinnosti hlasit trzby je docela hazard ;) nemluve o tom, ze pri dalsim update java se vse muze chovat zase uplne jinak. Ono udelat real testy jinak nez na produkcnim EET a zaslanim nejakych dat defakto nejde a po 1.3. delat takove testy nebude moc mozne.

todvora commented 7 years ago

Vrátil jsem zpět BC závislost, protože nevidím žádné jiné shůdné řešení, jak zachovat veškerou funkcionalitu i na nejnovějších verzích javy.

todvora commented 7 years ago

Release 3.0.0-beta-8 obsahuje mimo jiné i navrácený BC.

todvora commented 7 years ago

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8175251

PavelCibulka commented 4 years ago

Bug je uz opraveny. Mozna cas odebrat BC z verze 4.