Jak podepisovat Java aplikace a applety
17. 4. 2018 | Jindřich Zechmeister
Java je považována za málo důvěryhodnou platformu. Má stále problémy s velkým počtem zranitelností a podpis Java aplikace či appletu naprosto zásadní pro důvěru cílového uživatele. V tomto článku najdete postup, jak zažádat o certifikát pro podpis Java appletů a jak ho začít využívat.
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í:
- Prokázání původu aplikace a identity vydavatele
- 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 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
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
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
Časovou značku (timestamp) přidáte příkazem:
jarsigner -tsa https://timestamp.geotrust.com/tsa -keystore
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.
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz