Podpora vývojářů

Diskuzní server pro podporu tvorby aplikací pro transakční část PVS.
Vítá vás Podpora vývojářů Přihlásit se | Připojit | Nápověda
v Vyhledat

ověření podpisu u ECR obálky

Poslední příspěvek 06-01-2011, 14:22 od tvr. Počet odpovědí: 5
Řadit příspěvky: Předchozí Další
  •  05-12-2011, 17:15 1571

    ověření podpisu u ECR obálky

    Dobrý den,

    mám problém s ověřením podpisu při poslání podání intrastat v ecr obalce 2.0 při použití elementu BinarniZprava.
    Přijde mi zpet chyba "Verify sign XML failed due to message changes".

    Aplikace jako taková je dělaná v delphi. Abych si to ověřil u sebe a nebyl závislý na delphi, udělal jsem si jednoduchou aplikaci v dotnetu na ověření el. podpisu (volám funkci SignedXml.CheckSignature()).
    Ta mi oznámí, že je podpis validní (testuju tak, že si odchytím celý string tak jak jde do přenosu a z tohoto vykopíruju ecr obálku). V čem může být problém ?

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Můžu prosím dostat kontakt na někoho, s kým tohle můžu dořešit ?
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Zajímavé je, že pokud použiju XmlZprava (namísto BinarniZprava) a neencryptovane
    dostanu chybu:
    AddSignedTimeStamp: Timestamping failed or not allowed timestamp version.

    Pokud ale použiju XmlZprava a encryptuju, tak dostanu chybu
    Nepodařilo se dekomprimovat INSTAT soubor komprimovaný v gzip formátu. (N/A). Error when extracting message

    Tohle je zpráva tak jak jsem ji od sebe poslal (a kde je podle dotnet programu podpis validní)

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope"><EnvelopeVersion>2.0</EnvelopeVersion><Header><MessageDetails><Class>GRC_INTRASTAT</Class><Qualifier>request</Qualifier><Function>submit</Function><TransactionID></TransactionID><AuditID></AuditID><CorrelationID></CorrelationID><ResponseEndPoint></ResponseEndPoint><Transformation>XML</Transformation><GatewayTimestamp></GatewayTimestamp></MessageDetails><SenderDetails><IDAuthentication><SenderID>WR6WU98B7M5A</SenderID><Authentication><Method>MD5</Method><Value>/+K2m2g3RiIpXa2sGdcCiA==</Value></Authentication></IDAuthentication></SenderDetails></Header><GovTalkDetails><Keys><Key Type="IdSubjektu">09CZ136100JI00092</Key></Keys></GovTalkDetails><Body><EcrObalka xmlns="http://www.cs.mfcr.cz/schemas/EcrObalka/V_2.0"><Hlavicka GuidObalky="83C7CA99-22DE-4AB7-877D-5A56DB5875EC" VerzeObalky="2.0" Domena="INTRASTAT"></Hlavicka><Zprava Typ="INSTAT" HlavniID="CZ25097563110512343E05A"></Zprava><Ucastnici><Ucastnik Role="deklarant" Identifikator="09CZ136100JI00092" DatumCas="2011-05-12T15:05:24" AplikaceID="ABRAG3" AplikaceVerze="11.03.01"></Ucastnik></Ucastnici><BinarniZprava><Data>H4sIAAAAAAACC+1VUW/TMBB+n7T/YOUVdbGTZmVbkqm0AyqkrloLSHvzkiuLltqV7XT0P/An+C3wwzg7XZuWUQbjkZfovu98d/Z3p0t8/nlWkgUoXUiReOyIegREJvNCfEq8ykxbLz2iDRc5L6WAxFuC9sh5engQD4bjSXdCMF7oxPPS+EIsoJRzSGNYWYM87V0HET3pRMchYzRiQdgOL2jUjf3GGUzW5wYmxQxjc7TSgDLWolGLBbHvCDxirJtFp7R9Gp3EvoNI++tQBCOuzJLM7XeynON1ez3v8KAmrmSJhIIMCnwv0mnseHdJ1jlmlMb+A4O5nDnk9k7+xrYVXZVHy036o516GkT+U7UHSZ5Wr5vnCrROSayNAjCOJ7HfQHhqharZDaiGt8Y2vcQ2lj2Zu9gGQl9WrKqhZ21bXlbCqI2rAW3GW5yITcEmtCo9XBvtnhSGZ2aEYyYFns2aeJN9l7RZtkP3qz8aD3bUr5k/kH5y+fbyKfIPOfnASxCmEBnsbQXb2woWUeLm7vF+jBS/5ST6dVe+fwF99+0rUTCvbsriju/t0ot2QEkQdUjIAtIOg2c2bVzNQS0KLdVfdE/LqbnnCt5ryNPxx6T76qr7JjxjuILCI8rOrqAEriGxq8CnbT9gZ5fjBMVsxtnNAVnJFTe4v3B5bAB2lrIWqr/N/btdo2AKCncl4OsKma/yYMFdhx3V8WBn+moGXa8rkdWXn64sNwXD2N/Ctvr6KILGq+zw1zHDrdeueTw+LeW9s3Hzrm07S5WyV1063Lt+h41sMu7NDYF/q3fwX+9tvfvP1dtf/1YtqH+6aJIf9zY9mroHAAA=</Data><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
    <Reference URI="">
    <Transforms>
    <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
    <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
    <XPath xmlns:transns="http://www.cs.mfcr.cz/schemas/EcrObalka/V_2.0">ancestor-or-self::transns:Data[/transns:EcrObalka/transns:BinarniZprava/transns:Data = .]</XPath>
    </Transform>
    </Transforms>
    <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
    <DigestValue>uqJ2n0FHtHrhSYoVfTccElmBrHn5noj6opONFlCS0NY=</DigestValue>
    </Reference>
    </SignedInfo>
    <SignatureValue>RbPzS8qK0S2pxKky7CfMCn2pOxkFeM9LYKxjfq5lAT3LFujT2cyhK1+SeU55fg6N
    xWtsYSYIRIkYucVwyyuybieUB1MJPcGezn5/isuFWI6uvj5VFREAB2m2NMe0HAyf
    LaB1bC3WQfC9OXCdiFYUiTDWSTJbzjZWLaw6BCD/rQ8dYbHVh2f88d9dWVFa73xp
    wxH0jPbkuw2PAmS4yEOcOE4x3m/H/lNQvrmb6KAITJtZQctc8vwWVdmhBwF0P38C
    66FrYxRDHegVPg+6KC0xlrA1BYJDVlQ1LjaYaSrPu3p9FbFP7BNp4+bkU0Jjqxz6
    QHrzWffzS1nFR+JAZCGYKA==</SignatureValue>
    <KeyInfo>
    <X509Data>
    <X509Certificate>MIIGdDCCBVygAwIBAgIDEApUMA0GCSqGSIb3DQEBCwUAMF8xCzAJBgNVBAYTAkNa
    MSwwKgYDVQQKDCPEjGVza8OhIHBvxaF0YSwgcy5wLiBbScSMIDQ3MTE0OTgzXTEi
    MCAGA1UEAxMZUG9zdFNpZ251bSBRdWFsaWZpZWQgQ0EgMjAeFw0xMDA3MjEwODI1
    MDBaFw0xMTA3MjEwODI1MDBaMEkxCzAJBgNVBAYTAkNaMRAwDgYDVQQLEwdQMTIx
    NzcwMRYwFAYDVQQDDA1QZXRyIMSMZXJtw6FrMRAwDgYDVQQFEwdQMTIxNzcwMIIB
    IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtZip4hG9K8w2ZSpJBYAmkwlO
    rYEFznImLKKMIvRDC3oEd7g4kuiqgM8hiNFiM+m7Af0PZ93EpdWTDmJWUAWG7XdN
    yIy79vWjoCnwV4TGnxnVr31uzi4Sd1oO5C2avY6lgN9CAwf3nwpReuQ+NTLkaqUA
    sN1sJrmR6Uiv5NFwe0eWjNTJNRyq/vhBCh7y32b8uue9FhNznfnymj8OHUT/UQYz
    jubobJFik8Ea3znH+eJ//KeT1MhgAu54lsGJgwZUlErc94HNAuVG14vmLouBQ8Zl
    0OWMV0Bkipb+0dPpOfJdErdQZIifJpCsBRQEpltXIP0+FV9Cw2biyeLy4ga18QID
    AQABo4IDTTCCA0kwQQYDVR0RBDowOIEQdHJpc3RhckB2b2xueS5jeqAZBgkrBgEE
    AdwZAgGgDBMKMTMwNzQ3OTY0NqAJBgNVBA2gAhMAMAkGA1UdEwQCMAAwggEOBgNV
    HSAEggEFMIIBATCB/gYJZ4EGAQQBB4FIMIHwMIHHBggrBgEFBQcCAjCBuhqBt1Rl
    bnRvIGt2YWxpZmlrb3ZhbnkgY2VydGlmaWthdCBieWwgdnlkYW4gcG9kbGUgemFr
    b25hIDIyNy8yMDAwU2IuIGEgbmF2YXpueWNoIHByZWRwaXN1Li9UaGlzIHF1YWxp
    ZmllZCBjZXJ0aWZpY2F0ZSB3YXMgaXNzdWVkIGFjY29yZGluZyB0byBMYXcgTm8g
    MjI3LzIwMDBDb2xsLiBhbmQgcmVsYXRlZCByZWd1bGF0aW9uczAkBggrBgEFBQcC
    ARYYaHR0cDovL3d3dy5wb3N0c2lnbnVtLmN6MBgGCCsGAQUFBwEDBAwwCjAIBgYE
    AI5GAQEwgcgGCCsGAQUFBwEBBIG7MIG4MDsGCCsGAQUFBzAChi9odHRwOi8vd3d3
    LnBvc3RzaWdudW0uY3ovY3J0L3BzcXVhbGlmaWVkY2EyLmNydDA8BggrBgEFBQcw
    AoYwaHR0cDovL3d3dzIucG9zdHNpZ251bS5jei9jcnQvcHNxdWFsaWZpZWRjYTIu
    Y3J0MDsGCCsGAQUFBzAChi9odHRwOi8vcG9zdHNpZ251bS50dGMuY3ovY3J0L3Bz
    cXVhbGlmaWVkY2EyLmNydDAOBgNVHQ8BAf8EBAMCBeAwHwYDVR0jBBgwFoAUiehM
    34smOT7XJC4SDnrn5ifl1pcwgbEGA1UdHwSBqTCBpjA1oDOgMYYvaHR0cDovL3d3
    dy5wb3N0c2lnbnVtLmN6L2NybC9wc3F1YWxpZmllZGNhMi5jcmwwNqA0oDKGMGh0
    dHA6Ly93d3cyLnBvc3RzaWdudW0uY3ovY3JsL3BzcXVhbGlmaWVkY2EyLmNybDA1
    oDOgMYYvaHR0cDovL3Bvc3RzaWdudW0udHRjLmN6L2NybC9wc3F1YWxpZmllZGNh
    Mi5jcmwwHQYDVR0OBBYEFP3/rnvwbSC/0gDd45ON3jjaTK4QMA0GCSqGSIb3DQEB
    CwUAA4IBAQArhHXVoM4o++ljXUEpr7iHnVtXgo9Fdg9p6haPWm55oGVx0obUFa8C
    SDJOXrXGYpvew3RZ6QSxKnitrnNEFbg6m7BRaj5se7pWNngYpTPXy6rTllQtRja0
    Ivh2bMWFPDv6z3zurnkfm+wsq/QVlllTXseUu6rmiWS9jOPnWmE4adhOb+ASrq1R
    RIMAPpGxmNu9EFJEZEmMKiLFDDWfnNbsiiXl80KFTMG/HXgdd6MlpkUb87lbgcKX
    YKevoS3IClVwpHXCMbGE0eHAG0PNlijum/wTUNrGVjZGiKPvRwPoXtQZGfqP2jBn
    IP0ahoVIdNXB0094PG/JcbdfPyfakowS</X509Certificate>
    </X509Data>
    </KeyInfo>
    </Signature></BinarniZprava></EcrObalka></Body></GovTalkMessage>




  •  05-13-2011, 9:47 1572v odpovědi na1571

    Re: ověření podpisu u ECR obálky

    Chybová hlášení, která dostáváte jsou již ze systému celní správy. Tyto problémy vám musí pomoci odladit jejich technická podpora.

    http://www.celnisprava.cz/cz/o-nas/kontakty/Stranky/helpdesk-kontakty.aspx

  •  05-30-2011, 16:44 1576v odpovědi na1572

    Re: ověření podpisu u ECR obálky

    Tak jsem zase trochu dál, ale bohužel ještě ne u cíle.
    Problém je v tom, že po odeslání se někde cestou z dokumentu vytratí odřádkování (crlf nebo lf) přičemž některá z nich jsou součástí digitálního podpisu. Děje se tak u odeslaných xml dokumentů  i u přijmutých xml dokumentů.
    Je nějak zaručené, že to co odešle klient na PVS se nezmění ? Myslím tím i bílé znaky mezi xml elementy, které pro vlastní xml nemají žádný význam ?
    Já jsem si jistý, že dokument správně předám do http metody sent, takže pokud je problém ještě na mé straně, bude jedině někde tam - to ještě zkusím ověřit.
  •  05-31-2011, 16:59 1577v odpovědi na1576

    Re: ověření podpisu u ECR obálky

    Tak jsem našel v jiném threadu z r.2007 (http://bezpecne.dev.gov.cz/diskuze/forums/thread/869.aspx), že někdy v té době skutečně začaly odpovědi od PVS chodit jako jednořádkové.
    Problém je  v tom, že zpráva  vložená v elementu Body obsahuje už sama v sobě digitální podpis - jak odchozí, tak příchozí (je to implementace rozhraní ECR 2.0 pro komunikaci s celni správou) a odstranění některých bílých znaků tento podpis naruší. Je nějak možné zařídít, aby se obsah elementu Body - tedy vlastní zpráva - přenášel beze změny ?   
  •  05-31-2011, 20:11 1578v odpovědi na1577

    Re: ověření podpisu u ECR obálky

    Problém s bílými znaky nenastává v případě dobře vytvořeného elektonického podpisu. tj. při správné kanonizaci a nastavení parametru pro zachování bílých znaků, jak při vytváření, tak při kontrole podpisu. Ty se do podpisu nezahrnují a tudíž nemohou ovlivnit výsledek.

    V prostředí .NET nastavení může vypadat takto:

    // Create a new XML document.

    XmlDocument doc = new XmlDocument();

    // Format the document to ignore white spaces.

    doc.PreserveWhitespace = false;

    V tomto příspěvku http://bezpecne.dev.gov.cz/diskuze/forums/thread/1491.aspx je možné vidět celý příklad pro podepisování.

  •  06-01-2011, 14:22 1579v odpovědi na1578

    Re: ověření podpisu u ECR obálky

    Kanonizace (podle w3c standartu) bilé znaky neodstraní, odstraní je ms. parser, pokud mu nastavíte tu PreserveWhiteSpace=false. Pokud tam bílé znaky zůstanou, stanou se součástí podpisu, což je taky v souladu s w3c standartem.

    Vzhledem k tomu, že při zpracování přes PVS dojde k odstranění těchto znaků, je nutné tyto před vlastním podpisem vyhodit ve vlastní režii (nepoužíváme parser od ms.), jiná možnost asi tedy není. Takhle to dělám já při odesílání  zprávy, těžko ale nějak ovlivním zprávu, kterou z ECR brány dostanu nazpátek. Takové zprávy rovněž při podpisu obsahovaly řádkování, takže v nich uložený digitální podpis rovněž nelze ověřit. Pošlu jim odkaz na diskusi, aby se taky případně vyjádřili.

Zobrazit jako kanál RSS ve formátu XML