Problem s potpisom

Dec 11, 2012 at 7:36 PM

Mučim se već 2 dana s jedim problemom. Imam xml zahtjev (verificirao sam ga prema shemi), potpisao demo ključem i dodao SOAP omotnicu, ali mi apis server uvijek vraća grešku s004 - neispravan digitalni potpis.

Napisao sam i program koji provjerava potpisanu datoteku (bez soap omotnice) i verifikacia mi uredno prođe bez greške.

Sad, greška negdje sigurno postoji, ali ju ja ne vidim. To je jedan od onih situacija kad trebaš nekog sa strane da baci oko pa, eto, molim dobre duše da pogledaju potpisani XML da mi daju koji hint, jer vjerujem da sam blizu cilja.

Datoteke nisam mijenjao (nisu lijepo formatirane) da budu baš onakve kakve šaljem.

Probao sam soap dokument slati i curl-om, ali rezultat je isti.

Cijeli kod je napisan u javi koristeći Apache santuario biblioteku.

Da ne postam xml-ove ovdje, evo linkova na datoteke:

racun_zahtjev.xml

signed_racun.xml

soap_request.xml

soap_respond.xml

Dec 12, 2012 at 1:19 AM

Riješio.

Problem je u <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> elementu koji je trebao biti:

<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>

na to mi je ukazao jedan pažljivi promatrač sa drugog foruma i na tom sam mu neizmjerno zahvalan :D

Dec 14, 2012 at 4:36 PM

Bok,

Ovo će biti banalno pitanje, ali kada dođe do ove poruke, i kad se iskombiniraju različite mogućnosti, ostaju izgleda jedino takva...

Dokumentacija za preuzimanje certifikata savjetuje export ključa sa private key. Taj .pfx koristimo za potpis XML-a (tehnička spec. 1.2 : "Nakon toga priprema XML poruku zahtjeva i elektronički ju potpisuje s privatnim ključem aplikativnog certifikata koji je izdan obvezniku u svrhu fiskalizacije ")

Greška je bila u <X509Certificate> enkriptovati .pfx, zbog čega je odgovor CIS-a bio 002 - da certifikat nije izdala FIN-a.

APIS je onda skrenuo pozornost da <X509Certificate> treba da uzme javni ključ DER oblika. Što će reći exportovati certifikat bez private key-a u DER-u (.cer), pa ga enkriptovati po base64 (zar ne?)

--

Time je riješena poruka 002, no sada, kada signature uzima .pfx za SignatureValue , a .cert datoteku za X509Certificate, javlja se poruka 004 - da je digitalni potpis neispravan.

Neki savjet ili sugestija?

Dec 14, 2012 at 6:10 PM

U pfx (ili p12 na Linuxu), datoteci se nalaze i tvoj privatni i FINA-in javni ključ tako da ti ništa drugo ne treba za potpisivanje xml-a.