Closed todvora closed 7 years ago
Released version 3.0.0-beta-7 without any BC dependency.
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.
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.
OK super
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.
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.
Release 3.0.0-beta-8 obsahuje mimo jiné i navrácený BC.
Bug je uz opraveny. Mozna cas odebrat BC z verze 4.
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.