#language cs ## 09.12.2015 AK ---- '''česky''' | [[CodesigningCert|english]] ---- == Certifikáty pro podpis kódu == <> == Co potřebuji, abych získal(a) od CAcert certifikát pro podpis kódu? == === Jednotlivý uživatel CAcert === Pro schopnost podepisovat kód musíte být zaručovatel [[http://www.cacert.org/policy/CertificationPracticeStatement.php#p4.2.6|CPS 4.2.6]]. To znamená mít alespoň 100 bodů zaručení a složit zkoušku [[AssurerChallenge/CZ| Výzva zaručovatele]]. Je-li toto splněno, můžete poslat e-mail na support(zavináč)cacert.org a požádat o aktivaci schopnosti podepisování kódu ve svém účtu. . Více o bodech zaručení (Assurance Points): [[FAQ/AssuranceIntroduction/CZ| Úvod do zaručování]]. . Více o testu [[AssurerChallenge/CZ| Výzva zaručovatele]]: [[AssuranceHandbook2/CZ| Příručka zaručovatele]]. . Jak dlouho trvá získání podpisového certifikátu od CAcert? V současnosti jen několik dní. === Organizace a podepisování kódu === Od března 2008 mohou organizace registrované u CAcert vytvářet certifikáty pro podepisování kódu se svým názvem. Jakmile je organizace registrována, získáváte schopnost podepisovat kód. Nahlédněte do '''[[OrganisationAssurance/Manual/CZ| Příručky zaručování organizací]] (Organization Assurance Manual)'''. Máte-li další dotazy, pište na: support(zavináč)cacert.org === Jak obdržíte certifikát pro podepisování kódu === Předpoklady: Ve Vašem účtu je aktivována schopnost podepisovat kód. 1. Přihlaste se ke svému účtu CACert. 1. Jděte do menu "Klientské certifikáty", položka "Nový". 1. Zkontrolujte, že je tam "Podepisování kódu", a stiskněte "Další". 1. Vyžádejte si certifikát. 1. Pravou klávesou myši klikněte na odkaz pro instalaci certifikátu, z menu zvolte "Uložit jako..." a uložte svůj klientský certifikát do souboru. == Základní účely podepisování kódu == Podepisování kódu identifikuje '''Vás''', držitele certifikátu, že jste napsal nějaký kód, například java-kód v souboru ''pasta.jar''. === Pozor: podepisování kódu NENÍ jeho zabezpečení! === Řádný, bezchybný podpis kódu dokazuje autenticitu a integritu kódu. Podepisování kódu však ''NEZARUČUJE'' bezpečnost ani spolehlivost kódu. Takže - velmi vtipně, přinejmenším - koncový uživatel bude znát Vaše jméno těsně předtím, než mu zrušíte celý obsah všech pevných disků. ;-) Viz rozbor [[http://www.schneier.com/blog/archives/2005/09/code_signing.html| Schneier o bezpečnosti]]. == Java (příklad) == V okruhu ''Javy'': virtuální stroj Javy může řídit celý počítač uživatele. Ano, to může být záležitost bezpečnosti. Takže jakýkoli kód, který můžete stáhnout z Internetu, má omezené schopnosti udělat něco s Vaším počítačem. Zamýšlíte-li použít na počítači uživatele mocnější funkce, budete muset podepsat kód, který poskytujete, a doufat, že uživatel Vám důvěřuje (jako poslední instanci)! Viz také JavaCodeSigningTest * /!\ kořenový certifikát CAcert musí být zaveden do JavaVM, nejen do webového prohlížeče! * Zde je kopie modifikovaného úložiště klíčů JRE s přidanými kořenovými certifikáty CAcert, tj. kořenovým třídy 1 a zprostředkujícím třídy 3: [[attachment:cacerts]] . Jeho MD5 haš: e7a2e4682d2578e4f8715909b62a8a36 . Soubor "cacerts" najdete na java/jre/lib/security/ - prosím, nejprve si udělejte záložní kopii původního souboru. Počínaje verzí 5 Javy podporuje nástroj "jarsigner" časová razítka ([[TimeStamping/CZ|TimeStamping]] - na Linux Ubuntu zkuste otevřít návod '''man jarsigner'''). Takže při vypršení platnosti certifikátu pro podpis kódu nepotřebujete novou instalaci aplikace. Na druhou stranu však potřebujete vložit certifikát s časovým razítkem certifikační autority, pokud už není obsažen v JVM (Java Virtual Machine). Viz http://mindprod.com/jgloss/signedapplets.html === Příklady podepsaných aplikací === Jednoduché příklady: * CAcert podepisování kódu (potřebuje upravený soubor "cacerts"): viz [[http://guillaume.romagny.free.fr/pasta|Tiebogosovy špagety]] (nesmaže Vám disk, ale pomůže Vám nepřevařit špagety) * Thawte freemail podepisování kódu: viz [[http://guillaume.romagny.free.fr/pasta_thawte|zde]] Připomínky prosím na guillaume(zavináč)cacert.org! == Platformy akceptující certifikáty pro podepisování kódu od CAcert == Certifikát pro podepisování kódu má speciální atributy <>, aby ho akceptovaly aplikace firem Microsoft, Sun, Mozilla, atd. jako certifikát pro podepisování kódu (jako takový). Certifikáty vydané CAcert však budou funkční, jen když bude instalován kořenový certifikát CAcert a když bude důvěryhodný pro koncového uživatele '''A''' když koncový uživatel souhlasí se spuštěním kódu. == Jak mohu použít svůj certifikát pro podepisování kódu? (příklad: java) == Oprávnění podepisovat kód může být přidáno k novým e-mailovým certifikátům, které obdržíte od webu CAcert. Jakmile bude Vaše oprávnění schváleno, pak při další žádosti o e-mailový certifikát uvidíte volbu, zda chcete vložit i oprávnění podepisovat kód. Viz [[http://www.dallaway.com/acad/webstart/|Richard Dallaway web start a podpisy kódu CAcert, freemail Thawte]] nebo raději zde: http://www.crionics.com/products/opensource/faq/signFree.htm ( /!\ upozornění: od listopadu 2009 je program freemail Thawte včetně bezplatného podepisování kódu Java codesigning ukončen.) * seznam certifikátů v úložišti klíčů (změňte jks - typ úložiště a .ks - zkratku keystore [úložiště klíčů]) {{{ keytool -list -storetype pkcs12 -keystore keystore.p12 }}} * podepíše soubor .jar {{{ jarsigner -storetype pkcs12 -keystore keystore.p12 pasta.jar "guillaume frederic romagny's root ca id #2" }}} * podepíše soubor .jar s časovým razítkem (zachovat pořadí argumentů!) {{{ jarsigner -storetype pkcs12 -keystore keystore.p12 -tsa "http://time.certum.pl/" pasta.jar "guillaume romagny's root ca id" }}} * ověřte podepsaný soubor .jar {{{ jarsigner -verbose -verify -certs pasta.jar }}} == Jak použiji svůj certifikát pro podepisování kódu u Microsoft Authenticode? == Pro podepsání kódu u Microsoft Authenticode musíte rozložit soubor typu PKCS#12 na dočasný privátní klíč a soubory PKCS#7, které obsahuje, aby je šlo použít s aplikacemi podporujícími Authenticode. Protože musím vidět takový, který podporuje formát PKCS#12, zatím jsem se podílel na návodu, jak to udělat. Viz wiki stránku [[Authenticode/CZ|Authenticode]] s návodem. Authenticode upřednostňuje '''časová razítka za účelem vyhnout se reinstalaci''' aplikací, když platnost certifikátu vyprší. https://digitalid.verisign.com/developer/help/mscs_faq.htm Služba časových razítek Verisign - URL {{{ http://timestamp.verisign.com/scripts/timstamp.dll }}} Další informace o [[TimeStamping/CZ|TimeStamping]] == Konvertování úložišť klíčů == Java 1.4 může číst formát PKCS#12, ale nemůže ho zapisovat. JKS (Java Key Store, úložiště klíčů Javy) je značně nepohodlné (mimochodem, PKCS#12 také). Můžete chtít konvertovat svoje úložiště klíčů z JKS do PKCS#12, zvláště když generujete certifikát Freemail Thawte pro podepisování kódu. Viz Keytool IUI založený na Bouncy Castle Crypto API * {en} [[http://yellowcat1.free.fr/index_ktl.html|Keytool IUI]] * {fr} [[http://ragingcat.developpez.com/java/outils/keytool/ui/|KeyTool IUI]] * [[http://www.bouncycastle.org/|Legie Bouncy Castle]] * [[http://ejbca.sf.net|EJBCA používá Bouncy Castle - najdete zde kód i nástroje]] == Kroky potřebné, aby vývojáři Javy mohli testovat podepsaný aplet v prohlížeči == Potřebujete přidat kořenový certifikát CAcert (a možná i zprostředkující certifikát třídy 3) do úložiště certifikátů JVM CA. V Linuxu najdete příkaz "ControlPanel" ve složce JRE "bin" (javacpl.exe v MS Windows). == Linux == * http://www.jukie.net/~bart/elfpgp/ (používá klíče GPG) * http://www.hick.org/code/skape/elfsign/ * http://sourceforge.net/projects/disec (používá klíče GPG) * http://blogs.sun.com/roller/page/darren/Weblog/signed_solaris_10_binaries * http://www.dia.unisa.it/staff/luicat/home/publications/scn02.pdf (nefunkční odkaz) * http://libeccio.dia.unisa.it/wlf/ (nefunkční odkaz) == Podepisování balíčků Mozilla XPI (Firefox, Thunderbird) == Certifikáty CAcert pro podepisování kódu lze použít k podpisu [[http://www.mozilla.org/projects/xpinstall/|balíčků Mozilla XPI]] pro aplikace Mozilly, jako Firefox a Thunderbird. --(Aplikace Mozilly vyžadují hodnotu v poli Organisation (organizace), aby UI ohlásil, že položka je podepsána. Pouze organizace registrované u CAcert mohou podepisovat kód pomocí plug-inů Mozilly. Viz OrganisationAssurance [Zaručování organizací].)-- --(Jednotliví uživatelé CAcert s oprávněním podepisovat kód mohou použít návod níže, avšak aplikace Mozilly budou stále ohlašovat položku jako '''Unsigned''' (nepodepsanou). Viz [[https://bugzilla.mozilla.org/show_bug.cgi?id=372980|bug 372980]].)-- ''Opraveno ve Firefox 3.5.6 a Thunderbird 3.0.1pre.'' * [[http://www.mozilla.org/projects/security/pki/nss/tools/|Nástroje zabezpečení NSS]] * http://forums.tjworld.net/viewtopic.php?t=130 Stručný návod k získání, instalaci a použití certifikátů pro podpis kódu ve '''Windows''' pro rozšiřující balíčky Mozilla XPI. * http://developer.mozilla.org/en/docs/Code_snippets:Signing_a_XPI Předchozí odkaz již nefunguje, zde je zrcadlo * http://www.mozdevgroup.com/docs/pete/Signing-an-XPI.html Základní návod pro cross-platform používající certifikát podepsaný sám sebou (self-signed certificate), napsal Pete Collins. Pro použití certifikátů CAcert k podpisu balíčku XPI proveďte tyto kroky: 1. Instalujte certifikát pro podpis kódu do svého webového prohlížeče. 1. Extrahujte binární NSS utility, jak je popsáno v článku [[http://www.mozdevgroup.com/docs/pete/Signing-an-XPI.html|Peteho instrukce]]. 1. Identifikujte svou databázi certifikátů, která je obvykle umístěna ve Vašem [[http://www.mozilla.org/support/firefox/profile#locate|profilovém adresáři]]. Jeden způsob, jak určit Váš profilový adresář: najděte všechny soubory "key3.db" ve svém domovském adresáři: . {{{ find ~ -name key3.db}}} 1. Najdete-li více adresářů, pak v každém, který obsahuje soubor key3.db, vypište tam uložené certifikáty, abyste našli svůj nový podpisový certifikát (může být označen "*" v prvním sloupci), příkazem: . {{{ signtool -L -d }}} 1. Pokud jste našli správný adresář, položka vypadá takto: . {{{ * Joe Normal's Root CA ID (identifikátor kořenové CA Josefa Běžného)}}} 1. Postupujte podle návodu podepisování XPI above, extrahujte nepodepsaný balíček XPI do adresáře. 1. Zadejte příkaz podepisovacího nástroje (tento příkaz je uveden podle [[http://www.mozilla.org/projects/security/pki/nss/nss-3.11.4/nss-3.11.4-release-notes.html|NSS 3.11.4]]): . {{{ signtool -d -k "Joe Normal's Root CA ID" -p -X -Z }}} 1. Váš podepsaný balíček XPI je hotov. 1. Chcete-li ověřit správnost podpisu balíčku, použijte tyto dva příkazy: . {{{ signtool -v signtool -w }}} <
> ---- == Příspěvky a úvahy == . 06.12.2009-PhilippGuehring / DieterHenning e-mailem . {{{ Aktivace podepisování kódu pro organizace > Poté, co je odemčeno podepisování kódu, musí Vám být vydán nový certifikát, a při vystavení vyznačeno, že v něm máte aktivováno podepisování kódu. Myslím, že podepisování kódu je u prohlížečů s Java-skriptem nyní umístěno pod "Rozšířené možnosti" (Upřesnit). > Srdečné pozdravy, > Philipp Gühring Postup následuje. 1. Jako Org-Admin si musím nechat vystavit osobní certifikát '''SE''' schopností podepisovat kód. 2. Pak mohu tuto schopnost zapnout '''také''' u certifikátů klientů organizace. To jsem udělal a mám v obou (nových) certifikátech potřebné údaje. Přesněji: 1. Musíte to navrhnout skutečně jako jednotlivec. 2. Pak to musíte opět jako jednotlivec jedenkrát použít do žádosti o klientský certifikát. 3. Pak máte jako Org-Admin možnost zapnout tuto schopnost v dialogu. Díky za pomoc, s přátelskými pozdravy Dieter Hennig }}} ---- . YYYYMMDD-Vaše_jméno . {{{ Text / Vaše poznámky, úvahy a výňatky e-mailů }}} ---- <
> '''Category''' or '''Categories'''<
> CategoryAudit <
> CategorySoftware <
> CategoryOrganisationAssurance <
> CategoryAssurance <
>