Problémy s certifikátem či podepsáním aplikace   zodpovězená otázka

VB.NET

Problémy s certifikátem na tomto webu trvají. Tímto konstatováním nemíním kritizovat, jen navázat, protože něco podobného řeším ke své aplikaci.

Nelíbí se mi a chtěl bych odstanit varování Windows XP při spuštění VB.NET aplikace po síti: "Vydavatele se nepodařilo ověřit..." a dole poznámka, že nebsahuje podpis. Ideální by bylo vytvořit si nějakou vlastní (podepsanou) pomůcku, která by třeba představila autora a hlavně odstranila popsané varování - snad pomocí certifikátu autora či instituce (proto ten úvod).

Asi to není jednoduché, když stejně před spuštěním varují (pro neověření autora) i některé originál MS nástroje.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podepsat svojí aplikaci je otázka několika klepnutí myší bez jediného řádku kódu. Problém je, že pokud chcete skutečně důvěryhodný certifikát pro účely podpisu kódu (VeriSign) tak to stojí nekřesťanské peníze a většinou po roce se musí za další peníze obnovovat platnost.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji za odpověď a prosím ještě o další informace.

Myslíte podpis pořízený přes kartu "Signing" po zaškrtnutí "Sign the assembly"... a popř. i přidání do GAC? K čemu takový podpis slouží?

A jaký je rozdíl pokud by se "Strong Name" vytvořil pomocí "Framework Strong Name Utility" (programem sn.exe) a kompilací ve "Visual Basic Compiler" (vbc.exe) s použitím "keyfile"?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, podepisuje se to na kartě Signing (jedna z možností, jde to udělat i přes nástroje v příkazové řádce). Podpis slouží stejně jako například u digitálně podepsané e-mailové zprávy k ověření vydavatele a k ověření, že soubor nebyl modifikován (kdyby ho někdo třeba chtěl záměrně infikovat trojským koněm).

Pomocí nástroje Framework Strong Name Utility právě vytvoříte ten keyfile (který se dá jednodušeji vytvořit přímo ve Visual Studiu) který předáte jako parametr kompilátoru Visual Basic Compiler. Opět stačí nastavit ve Visual Studiu a není třeba používat příkazovou řádku.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Rozdíl výsledků mezi dvěma diskutovanými způsoby tu je. Klíč vytvořený ve vývojovém prostředí VB.NET Express (VS nemám) je certifikát! Dá se ve Windows XP číst i instalovat v prohlížeči.

(I když způsobem přes příkazovou řádku jsem nedokázal při podepisování překonat ve formulářové aplikaci potřebu 'Sub Main' .)

Účel podpisu mi však stále z mého pohledu uniká, když nikde nenacházím pro moje amatérské prográmky využití a navíc ani obecně nechápu, proti komu by podpis chránil. Systém, antiviry, antispy, firewally i NET bez podepisování jsou snad až dost a problém s varováním před neověřeným autorem zůstává.

Děkuji za Vaše informace.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Výstupní soubor vytvořený buď na kartě Signing nebo nástrojem sn.exe rozhodně není certifikát. Je to pouze pár privátní-veřejný klíč uložený v souboru .snk který se potom použije pro vytvoření toho Strong Name. Pokud stále trváte na svém názoru, popište mi přesně jak jste postupoval, včetně importování do Windowsáckého úložiště certifikátů. Je možné že si to pletete s nástrojem MakeCert.exe, který skutečně vytváří certifikáty importovatelné do Windows, ovšem jsou to certifikáty POUZE PRO TESTOVACÍ ÚČELY, tj. nemají žádného důvěryhodného vydavatele a nelze je ověřit.

Účel podpisu je jak už jsem řekl z důvodu ověření pravosti (tj. pochází skutečně od vydavatele od kterého očekáváte) a pro ověření integrity že soubor nebyl změněn. Pokud máte certifikát od důvěryhodné certifikační autority (VeriSign, Thawte), problém s varováním před neověřeným autorem odpadá.

Strong Name je souhrn vlastností, které dohromady vytvářejí globálně unikátní identitu Assembly, tj. nikdy nemohou existovat dvě stejné Assembly pokud jsou silně pojmenované. To se používá jednak pro odstranění konfliktu verzí knihoven a jednak opět pro ověření identity Assembly, to však už nemá nic společného s ověřováním ve Windows, nýbrž s bezpečnostním systémem .NET Frameworku (CAS, Code Access Security), který mimo jiné uděluje přístupová oprávnění aplikacím na základě jejich identity.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Nejdřive se přiznám, že jsem amatér pracující metou pokusů a jsem spokojený, pokud dosáhnu funkgujícího výsledku. Vím, že to tak není dobře a že fungující kód nemusí být správný a že jde o postup bez pochopení principů. Často pak sám nevím, jak jsem k výsledku dospěl (jednal bych jinak, kdyby mně bylo tak o 20 let méně). Zopakoval jsem si tedy jak jsem k certifikátu (.pfx) dospěl a bylo to skutečně přes "Creat Test Certifikate".

Děkuji za Vaši trpělivost a omlouvám se za svoji nedokonalost.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback