Autor Téma: Plánovaná výměna SSL certifikátu v EET - mirus77  (Přečteno 1737 krát)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2268
  • Karma: 122
    • Verze Delphi: D2007, XE3, DX10
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #15 kdy: 09-08-2018, 09:37:58 »
Excellent
Rated 1 time
Takže to nie je len teoretizovanie, lebo to má veľmi tvrdý dopad v praxi.
Jenomze z Tebe nam tu roste pred ocima Programator :-)

Kriteria, ktera uplatnuje JM, tomu by se dalo eufemisticky rikat mozna extremni programovani, kde je jedno jak to vypada, hlavne ze je to rychle a stoji to co nejmin. A kdyz to neni ono nebo je to treba upravit, tak se vsechno vyhodi a jde se programovat znovu od nuly, casto uplne jini lide. Ovsem tenhle pristup se IMHO da pouzit jen u uzke skupiny aplikaci.

A napsat remeslne slusne program podle ustalenych zvyklosti, to je zakladni predpoklad udrzovatelnosti softu per se, to neni zadne teoretizovani nybrz vysostne prakticka zalezitost, aby s kodem mohli efektivne pracovat i jini lide po mnoho let.

Ja si treba nedovedu predstavit, ze bych v programu pouzil cesky symbol. Me by to vubec nikdy nenapadlo ani po flasce ginu

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2051
  • Karma: 90
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #16 kdy: 09-08-2018, 10:35:37 »
Excellent
Rated 1 time
... aby s kodem mohli efektivne pracovat i jini lide po mnoho let.

Ja si treba nedovedu predstavit, ze bych v programu pouzil cesky symbol. Me by to vubec nikdy nenapadlo ani po flasce ginu

No právě - já bych nebyl tak tvrdý - jsou podle mne vyjimky.

Programuji něco s řízením výroby, kdy firma používá hromadu slangových nebo odborných výrazů s mixem EN, DE a češtiny a kdovíčeho. Ze začátku jsem zkoušel tyto výrazy překládat interně do EN, ale pak jsem rezignoval a pak mám třeba CopyBlende, DeleteZavitovka, InsertFaje popř. CopyPlatlePodPrstenec.

Je to i z důvodu HOSIP a že za 2 roky když nekdo přijde (nebo ja) a uvidí takovou funkci tak hned má jasno. Navíc se mi v tom výrazně lépe orientuje, než kdybych musel pro Faje hledat jak jsem to vlastně tehdy přeložil (navíc s rizikem, že jsem to přeložil úplně jinak).
Embarcadero MVP - Czech republic

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3519
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #17 kdy: 09-08-2018, 10:53:43 »
Hm, pre také špeciálne názvy by som asi vytvoril slovník. Mimo aplikáciu.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2268
  • Karma: 122
    • Verze Delphi: D2007, XE3, DX10
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #18 kdy: 09-08-2018, 11:18:42 »
uvidí takovou funkci tak hned má jasno. Navíc se mi v tom výrazně lépe orientuje, než kdybych musel pro Faje hledat jak jsem to vlastně tehdy přeložil (navíc s rizikem, že jsem to přeložil úplně jinak).
Ano, to je ale ustalena zvyklost v danem prostredi. Kdyz napr. jeste Skodovka stavela elektrarny, tak pokud je dodavala do zapadnich zemi, pouzivala standard KWU (Siemens), kde bylo predepsano, jak oznacit kazdy signal na elektrarne, aby se z jeho kodu dalo poznat, wo co gou vcetne jeho stavu. A pak samozrejme nejen projektanti a dratenici na svorkach relatek, ale i programatori v SW pouzivali tento standard a nikdo tam nezavadel nejake vlastni nazvoslovi a nepokousel se delat z inzenyrske discipliny umeni...

Offline mirus

  • Mladík
  • **
  • Příspěvků: 53
  • Karma: 11
    • Verze Delphi: Delphi 10.2
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #19 kdy: 09-08-2018, 14:56:13 »
Excellent
Rated 1 time
Vím, že se nemá kombinovat více jazyků v kódu (názvu method apod.), ale ty české XML elementy mne dostaly. ??? Polepším se pro příště.  ;)

Online Delfin

  • Guru
  • *****
  • Příspěvků: 1195
  • Karma: 53
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #20 kdy: 16-08-2018, 01:03:47 »
Vím, že se nemá kombinovat více jazyků v kódu (názvu method apod.), ale ty české XML elementy mne dostaly. ??? Polepším se pro příště.  ;)

Tak rozhodne, v prvni rade by se melo polepsit MFCR. Piraty na ne (ti by mohli v IT ledacos vylepsit; bohuzel to dopadlo jinak)! ::) :) Sjednoceni nazvu metod do jednoho jazyka v knihovne vsak zpusobi destabilizaci ABI za coz bych(om) nejspis sklidil(i) kritiku.

Jinak ono to bude asi o zvyklosti daneho kraje. Nedovedu si totiz moc predstavit ze by nekdo v Cine napsal Has警告 :)
« Poslední změna: 16-08-2018, 01:34:42 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline Roman Č.

  • Nováček
  • *
  • Příspěvků: 9
  • Karma: 0
    • Verze Delphi: Delphi 7, XE2, 10.2 Tokyo
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #21 kdy: 27-08-2018, 11:04:27 »
Přátelé, píšete, že na Playgroundu (PG) to již funguje bez problémů. Já jsem se o to pokusil tedy také a dostal jsem varování EET.ValidResponse = false, což znamená zřejmě jediné, a sice že na FU na PG opravdu již změnili certifikát.
Chci tuto situaci ale vyřešit, aby odpověď byla platná (na PG - proto to tam myslím FU taky dal).
Je pravda, že v certifikátech docela plavu a bez řešení od Miruse bych byl zřejmě ztracen, takže asi dělám něco špatně, nicméně zkusím popsat můj postup:
na tomto odkazu http://www.etrzby.cz/cs/oznameni-pro-vyvojare je psáno, že tady https://dl.cacerts.digicert.com/DigiCertGlobalRootG2.crt je možné stáhnout nový kořenový certifikát, tedy stáhnul jsem. V kódu od Miruse pro odeslání do EET jsou ale dva certifikáty:
        EET.RootCertFile := 'Geotrust_PCA_G3_Root.pem';
        EET.AddTrustedCertFromFileName('trusted_CA_pg.der');
Stáhnul jsem tedy zmiňovaný DigiCertGlobalRootG2.crt a ještě DigiCertGlobalCAG2.crt (netuším proč, prostě jsem si tipnul, že by to mohl být ten správný) a kód pro odeslání do PG jsem upravil takto:
        EET.RootCertFile := 'DigiCertGlobalRootG2.crt';
        EET.AddTrustedCertFromFileName('DigiCertGlobalCAG2.crt');
Bohužel výsledek je stejný: EET.ValidResponse = false.

Tak Vás žádám o radu, zda nevíte, co přesně dělám špatně, a jak to napravit.
Předem díky.

Offline mirus

  • Mladík
  • **
  • Příspěvků: 53
  • Karma: 11
    • Verze Delphi: Delphi 10.2
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #22 kdy: 27-08-2018, 11:45:46 »
Pro EET.AddTrustedCertFromFileName se nic nemění. slouží pouze pro ověření podpisu XML odpovědi.

Změna by se měla týkat pouze .
 EET.RootCertFile := 'Geotrust_PCA_G3_Root.pem';
- pro USE_INDY https komunikaci.
Mění se pouze vydavatel certifkátu pro HTTPS komunikaci, podle kterého se dá ověřit platnost certifikátu HTTPS komunikace.

Dále by se mělo ověřovat CN daného HTTPS certfikátu CN="www.eet.cz". t.j. dvě kritéria pro ověření, že odpověď přišla od toho správného serveru.
(Volitelně použitelné vyplněním property EET.HttpsTrustName := 'www.eet.cz'

Offline Roman Č.

  • Nováček
  • *
  • Příspěvků: 9
  • Karma: 0
    • Verze Delphi: Delphi 7, XE2, 10.2 Tokyo
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #23 kdy: 27-08-2018, 13:12:07 »
Mirusi, děkuji za rychlou odpověď, bohužel jsem z toho ještě víc zmatený.
Píšeš:
Citace
Pro EET.AddTrustedCertFromFileName se nic nemění. slouží pouze pro ověření podpisu XML odpovědi.
Z toho bych právě usoudil, že mám v tomto problém, protože dostávám EET.ValidResponse = false (z FSigner.VerifyXML).
Celé Tvé řešení jsem rozjel na Delphi 7, bez INDY, tedy na WinInet, s Indy se prostě nešlo s EET na D7 domluvit.
Jestli tomu tedy rozumím, pak
Kód: Delphi [Vybrat]
  1.  EET.RootCertFile := 'Geotrust_PCA_G3_Root.pem';

není relevantní na WinInet (bez Indy)?
A pokud tomu tak není, je problém, když použiji CRT místo PEM, tedy
Kód: Delphi [Vybrat]
  1.   EET.RootCertFile := 'DigiCertGlobalRootG2.crt';

je OK?
Podobně pak
Kód: Delphi [Vybrat]
  1.   EET.AddTrustedCertFromFileName('trusted_CA_pg.der');

je relevantní pouze pro Indy, nebo je třeba nechat i pro WinInet?
Jinak doplnil jsem do kódu
Kód: Delphi [Vybrat]
  1.   EET.HttpsTrustName := 'www.eet.cz';

ale stále stejný problém. EET zpráva odejde korektně, ale odpověď je označena za neplatnou (EET.ValidResponse = false).
Jinak DigiCertGlobalRootG2.crt jsem samozřejmě nainstaloval do systému, nějak tuším, že by to mohlo mít spojitost s WinInet.

Díky za jakékoliv nakopnutí dál, velice si toho vážím (a věřím, že nejsem sám).


Offline mirus

  • Mladík
  • **
  • Příspěvků: 53
  • Karma: 11
    • Verze Delphi: Delphi 10.2
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #24 kdy: 27-08-2018, 13:30:05 »
EET.RootCertFile je pouze pro INDY ne pro WinInet.
pokud je EET.HttpsTrustName := '' tak by to mělo fungovat bez této kontroly CN. (prozatím vypnout).

S jedním zdejším kolegou jsme řešily "neplatný podpis odpovědi" proti PlayGround (PG) a zjistilo se, že nemá aktuální PG certifikáty. Jednou se měnily (co jsem postřehl).
Nejprve toto ověřit.
Na GitHub u Delphi EET jsou aktuálnější PG certifikáty. Jak podepisovací pro testovací DIČ, tak i trusted_CA_pg.der
https://github.com/mirus77/DelphiEET/tree/master/cert

Offline Roman Č.

  • Nováček
  • *
  • Příspěvků: 9
  • Karma: 0
    • Verze Delphi: Delphi 7, XE2, 10.2 Tokyo
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #25 kdy: 27-08-2018, 15:10:07 »
Poor
Rated 1 time
Díky, certifikáty mám poslední, s tím problém není. Vypadá to, že problém způsobuje, když odesílám do PG starší data - již jednou odeslaná do EET do produkčního módu.
V takovém případě totiž negeneruji nový BKP a PKP, ale beru již jednou vytvořené oba kódy a odesílám znovu, jenže nyní do PG místo do produkčního módu.
A to je vlastně zřejmě celý problém, protože již vytvořené BKP a PKP jsou vytvořeny pomocí certifikátu pro produkční prostředí.
Jestli se pletu, dejte mi prosím někdo vědět, jinak se omlouvám, že mi to hned nedošlo.
Jakmile jsem vygeneroval nová data (nový doklad) a poslal je do PG (tedy BKP a PKP byly generovány nově s nastavením pro PG), je vše OK, a to včetně nastaveného
EET.HttpsTrustName := 'www.eet.cz';
I tak Mirusi díky, zase jsem pochopil kousek víc z EET ;)

Offline mirus

  • Mladík
  • **
  • Příspěvků: 53
  • Karma: 11
    • Verze Delphi: Delphi 10.2
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #26 kdy: 28-08-2018, 09:33:01 »
Už z jednoho důvodu nemůžeš kombinovat data pro PRODUKCI a PLAYGROUND a t.j. DIČ (parameters.Data.dic_popl) (DIČ musí sedět s podpisovým klíčem .p12, pro které byl klíč vygenerován).

Podklad pro  PKP. (podpisový kód poplatníka)

  sPKPData := '';
  sPKPData := parameters.Data.dic_popl;
  sPKPData := sPKPData + '|' + IntToStr(parameters.Data.id_provoz);
  sPKPData := sPKPData + '|' + parameters.Data.id_pokl;
  sPKPData := sPKPData + '|' + parameters.Data.porad_cis;
  sPKPData := sPKPData + '|' + parameters.Data.dat_trzby.NativeToXS;
  sPKPData := sPKPData + '|' + parameters.Data.celk_trzba.DecimalString;


BKP je jenom hash PKP. (BKP - binární kód poplatníka).


Offline Marek Weyda

  • Plnoletý
  • ***
  • Příspěvků: 213
  • Karma: 7
    • Verze Delphi: Delphi 2007, 10.1 Berlin
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #27 kdy: 28-08-2018, 09:58:00 »
Už z jednoho důvodu nemůžeš kombinovat data pro PRODUKCI a PLAYGROUND a t.j. DIČ (parameters.Data.dic_popl) (DIČ musí sedět s podpisovým klíčem .p12, pro které byl klíč vygenerován).

Tak já myslím, že pan kolega Roman Č. dle jeho příspěvků až tak úplně nechápe, jak EET funguje, což mi přijde smutné … protože zrovna na oficiálním webu Ministerstva financí pro EET je kupodivu vše docela pěkně vysvětlené i pro laiky. Minimálně rozdíl produkčního prostředí a PlayGroundu a jednotlivých certifikátů by snad měl chápat každý, kdo EET programoval. A ne jen tak slepě kopírovat certifikáty a zkoušet, jestli ten který pasuje a co je vlastně zač. Ale asi jen tak slepě přebral Tvoje řešení, aniž by viděl do hloubky.

Jinak trvám na tom, co jsem už v této diskuzi psal - výměna certifikátů se týká pouze samotného zabezpečeného spojení a nikoliv certifikátů pro podpisy a ověřování. Já už zaslal od toho dubna na PlayGround hodně testovacích dat a žádná změna, vše funguje na 100 procent i po výměně. Jak už jsem psal, podle mě se to dotkne asi jenom nějakých specializovaných pokladen, kde práce s certifikáty není tak pohodlná a "automatická".

Spíše jsem zvědavý, jestli opravdu ty certifikáty pro podpisy a ověřování vydrží 3 roky, jak avizovali. Zatím kupodivu EET jede dobře, i když jsem očekával něco jiného.

Offline Roman Č.

  • Nováček
  • *
  • Příspěvků: 9
  • Karma: 0
    • Verze Delphi: Delphi 7, XE2, 10.2 Tokyo
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #28 kdy: 28-08-2018, 15:05:23 »
Jistě, když jsem EET dával dohromady, tak jsem si tím vším samozřejmě prošel a nastudoval, jen jsem jednoduše za ty cca dva roky od posledních úprav kódu zapomněl detaily a neuvědomil jsem si, že v mém testovacím kódu při odesílání dat negeneruji již jednou vygenerované BKP a PKP. Takže se ještě jednou omlouvám, že jsem zdržoval.

Offline Ján Masaryk

  • Mladík
  • **
  • Příspěvků: 79
  • Karma: 5
    • Verze Delphi: 2010
Re:Plánovaná výměna SSL certifikátu v EET - mirus77
« Odpověď #29 kdy: 30-08-2018, 15:16:44 »
Pre MIRUS.

Ahoj MIRUS, od akej verzie Delphi sa dajú rozbehať Tvoje komponenty s INDY ?
Mám D2010 a padá mi to na

Kód: Delphi [Vybrat]
  1. constructor TEETRIO.Create(AOwner: TComponent);
  2. begin
  3.   ...
  4.   HTTPWebNode.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
  5.   ...
  6. end;
  7.  


Kompilér vyhodí hlásenie 'Undeclared identifier: IOHandler'

Pozeral som do zdrojáku webnode.pas a tam IOHandler nie je.

Alebo je to problém  SOAP ?

Ďakujem za odpoveď.

« Poslední změna: 30-08-2018, 15:23:09 od Ján Masaryk »

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: