Come firmare applicazioni e applet Java
17/apr/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.
A cosa servono i certificati per la firma delle applicazioni
Proprio come gli altri certificati, i certificati di firma del codice servono a migliorare la sicurezza; tuttavia, non vengono utilizzati per la comunicazione tra il browser e il server, ma per la firma digitale delle applicazioni. L'uso del certificato è simile alla firma elettronica che conosciamo dalla comunicazione via email.
Il significato principale della firma del codice è il seguente:
- Dimostrare l'origine dell'applicazione e l'identità dell'emittente
- Dimostrare la non alterazione del codice durante la trasmissione all'utente
Come per la firma elettronica, è necessario dimostrare l'identità dell'emittente per essere sicuri che il software non provenga da una fonte non affidabile. Allo stesso modo, è importante il controllo dell'integrità dei dati, vale a dire la loro completezza e inalterabilità. Grazie alla firma digitale dell'applicazione, possiamo assicurarci che nessuno abbia modificato l'applicazione dopo il rilascio. Per gli utenti della tua applicazione, la firma è una garanzia che il programma proviene da te e che nessuno lo ha cambiato dopo il rilascio.
Qual è il vantaggio del certificato di firma del codice per Java?
Ho menzionato le caratteristiche generali e i vantaggi del certificato di firma del codice. Oltre ai vantaggi sopra elencati, il certificato per la firma delle applicazioni Java ti consente di:
- firmare i file Jar per le piattaforme desktop.
- utilizzare l'algoritmo di hash Secure Hash Algorithm SHA-1 e opzionalmente anche il più avanzato SHA 2.
- compatibilità con Runtime Environment (JRE).
- dimostrare all'utente l'origine e la sicurezza del codice, aiutando a ridurre il numero di avvisi
Java è considerata una piattaforma poco affidabile. Ha ancora problemi con un gran numero di vulnerabilità (di cui vieni periodicamente informato nel settimanale Settimana nella sicurezza), la firma delle applicazioni o degli applet Java è assolutamente cruciale per la fiducia dell'utente finale.
Come richiedere un certificato per Java
Oltre all'ordine del certificato per la firma del codice su SSLmarket, è necessario affrontare anche gli aspetti crittografici, come la richiesta CSR e la chiave privata.
Dopo la firma delle applicazioni e degli applet Java, avrai bisogno del JDK (Java Development Kit) distribuito da Oracle. Per lavorare con il certificato e firmarlo, avrai bisogno dei programmi keytool, jar e jarsigner da questo pacchetto.
Creazione di un Keystore e di una chiave privata
Prima di generare la richiesta di certificato, che è una chiave pubblica, devi creare la tua chiave privata. Questo lo farai con il comando
keytool -genkey -keyalg rsa -keystore
Il Keystore ti chiederà di nominarlo, di creare un alias e una password per il keystore. Ti chiederà anche il nome della tua azienda.
La coppia di chiavi viene memorizzata nel Keystore al momento della creazione e in nessun caso la chiave privata deve essere inviata altrove.
Ora crea una richiesta CSR, che è necessaria per l'ordine del certificato. Sarai invitato a inserire informazioni dettagliate.
keytool -certreq -file certreq.csr -keystore
Inserisci la richiesta CSR creata nell'ordine del certificato di firma del codice su SSLmarket.
Come firmare con il certificato
Importazione del certificato nel Keystore
Dopo la verifica della tua azienda, l'autorità emetterà il certificato e lo riceverai da SSLmarket tramite email. Prima dell'uso, è necessario importarlo nel tuo keystore con il comando:
keytool -import -trustcacerts -keystore
Nota che il file P7B importato non è il certificato intermedio che ti abbiamo inviato. È necessario convertire il certificato SSL da SSLmarket dal formato PEM (Base64) al formato PKCS#7, ovvero P7B, e quindi importarlo insieme all'intermedio..
Firma di applicazioni e applet
Per firmare un file Jar, utilizza l'applicazione jarsigner.
jarsigner -keystore
Aggiungerai il timestamp con il comando:
jarsigner -tsa https://timestamp.geotrust.com/tsa -keystore
Durante la firma, ti verrà chiesto di inserire la password del Keystore che hai creato al momento della sua impostazione.
Verifica della firma
Sicuramente vorrai controllare la tua nuova firma. Puoi farlo con il comando
jarsigner -verify -verbose -certs C:TestApplet.jar
Se tutto è in ordine, puoi pubblicare l'applicazione firmata su internet e renderla disponibile agli utenti. Se scaricano il tuo programma o applet Java, il loro Java Runtime Environment mostrerà loro il tuo ID digitale dalla firma.
Ulteriori informazioni possono essere trovate nella documentazione
Questo articolo serve per una rapida comprensione della firma delle applicazioni Java. Consiglio di studiare la documentazione completa di Oracle, che copre l'intera questione della firma delle applicazioni e degli applet Java. Puoi trovarla sul sito The Java Tutorials.
Specialista per i certificati SSL di sicurezza
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz