Úvodní stránka » Podepisování kódu (Code Signing) » Jak podepisovat Java aplikace a applety

Jak podepisovat Java aplikace a applety

(27. 10. 2013) Certifikáty Code Signing pro podpis kódu jsou méně obvyklým typem SSL certifikátu, jejich použití je však zásadní pro bezpečnost aplikací na PC platformě a mobilních zařízeních. Dnešní článek ukáže, jak prakticky zažádat a použít Code Signing pro Javu.

Logo Java

K čemu slouží certifikáty pro podpis aplikací

Stejně jako ostatní certifikáty slouží Code Signing certifikáty pro zvýšení bezpečnosti; nepoužívají se však pro komunikaci mezi prohlížečem a serverem, ale pro digitální podpis aplikací. Použití certifikátu se podobá elektronickému podpisu, jak ho známe z e-mailové komunikace.

Hlavní význam podpisu kódu je následující:

  1. Prokázání původu aplikace a identity vydavatele
  2. Prokázání nenarušení kódu při přenosu k uživateli

Stejně jako u elektronického podpisu je třeba jednat prokázat identitu vydavatele, abychom si mohli být jistí, že software nepochází z nedůvěryhodného zdroje. Stejně tak důležitá je kontrola integrity dat, tedy jejich úplnosti a neměnnosti. Díky digitálnímu podpisu aplikace se můžeme přesvědčit o tom, že aplikaci nikdo po vydání nezměnil. Pro uživatele vaší aplikace je podpis zárukou, že program pochází od vás a nikdo ho po vydání nezměnil.

Jaký je přínos Code Signing certifikátu pro Javu?

Zmínil jsem obecné vlastnosti a výhody certifikátu pro podpis kódu. Krom výše uvedených výhod vám certifikát pro podpis Java aplikací umožňuje:

  • podpis Jar souborů pro desktopové platformy.
  • používá hešovací algoritmus Secure Hash Algorithm SHA-1 a volitelně i pokročilejší SHA 2.
  • kompatibilita s Runtime Environment (JRE).
  • uživateli prokáže původ a bezpečnost kódu, pomůže snížit počet varovných hlášek

Java je považována za málo důvěryhodnou platformu. Má stále problémy s velkým počtem zranitelností (o kterých vás pravidelně informují v týdeníku Týden v bezpečnosti), je podpis Java aplikace či appletu naprosto zásadní pro důvěru cílového uživatele.

Jak zažádat certifikát pro Javu

Krom samotného objednání certifikátu pro podpis kódu na SSLmarketu je třeba vyřešit i kryptografické aspekty, jako je CSR request a privátní klíč.

Po podepisování Java aplikací a appletů budete potřebovat JDK (Java Development Kit) distribuovaný Oraclem. Pro práci s certifikátem a k podpisu budete potřebovat programy keytool, jar, a jarsigner z tohoto balíku.

Vytvoření Keystore a privátního klíče

Před vygenerováním žádosti o certifikát, což je veřejný klíč, potřebujete vytvořit váš klíč privátní. Provedete to příkazem

keytool -genkey -keyalg rsa -keystore <keystore_filename> -alias <alias_name> -keysize 2048

Keystore vás vyzve k jeho pojmenování, vytvoření jeho aliasu a hesla pro keystore. Zeptá se i na název vaší společnosti.

Dvojice klíčů je po vytvoření uložena v Keystore a privátní klíč v žádném případě nikam neposílejte.

Nyní vytvořte CSR request, který je potřeba pro objednávku certifikátu. Budete vyzvání k zadání upřesňujících informací.

keytool -certreq -file certreq.csr -keystore <keystore_filename> -alias <alias_name>

Vytvořený CSR request vložte do objednávky Code Signing certifikátu na SSLmarketu.

Jak s certifikátem podepisovat

Import certifikátu do Keystore

Autorita po ověření vaší společnosti certifikát vydá a obdržíte ho od SSLmarketu e-mailem. Před použitím je třeba ho naimportovat do vašeho keystore příkazem:

keytool -import -trustcacerts -keystore <keystore_filename> -alias <alias_name> -file cert.p7b

Upozorňuji, že importovaný P7B soubor není námi zaslaný Intermediate certifikát. Je nutné si SSL certifikát od SSLmarketu z PEM formátu (Base64) převést do formátu PKCS#7, tedy P7B, a potom naimportovat spolu s intermediatem. K tomu poslouží článek Základy práce s OpenSSL - export, import, převody formátů.

Podpis aplikací a appletů 

Pro podpis Jar souboru využijte aplikace jarsigner.

jarsigner -keystore <keystore_filename> <umístění (např. C:\TestApplet.jar)> <alias_name>

Časovou značku (timestamp) přidáte příkazem:

jarsigner -tsa https://timestamp.geotrust.com/tsa -keystore <keystore_filename> <path to Applet (ie. C:\TestApplet.jar)> <alias_name>

Při podpisu budete vyzvání k zadání hesla Keystoru, které jste vytvořili při jeho založení.

Kontrola podpisu

Jistě budete chtít váš nový podpis zkontrolovat. To můžete provést příkazem

jarsigner -verify -verbose -certs C:\TestApplet.jar

Pokud je vše v pořádku, můžete podepsanou aplikaci publikovat na internetu a zpřístupnit ji uživatelům. Pokud si váš Java program nebo applet stáhnou, jejich Java Runtime Environment jim zobrazí vaše digitální ID z podpisu.

Více informací najdete v dokumentaci

Tento článek slouží k rychlé orientaci v podpisu Java aplikace. Doporučuji prostudovat kompletní dokumentaci Oraclu, která pokrývá celou problematiku podepisování Java aplikací a appletů. Najdete ji na webu The Java Tutorials.

Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
Certifikovaný Symantec Sales Expert Plus 
e-mail: jindrich.zechmeister(at)zoner.cz


Rubriky

  • Aktuality
  • Novinky ze SSLmarketu
  • Bezpečnost
  • Zajímavosti o SSL
  • Návody k SSL
  • Týden v bezpečnosti
  • Podepisování kódu (Code Signing)
  • Speciály

  • Šifrované komunikátory
  • Jak šifrovaně tunelovat s OpenVPN
  • Dvoufaktorová autentizace
  • Spojte se s námi

  • RSS kanál SSL blogu
  • SSLmarket na Facebooku
  • SSLmarket na Twitteru
  • SSLmarket na Google+
  • Kontakt
  • SSL market