Ψηφιακή υπογραφή κώδικα σε Java

Στο εγχειρίδιο αυτό μπορείτε να δείτε τη διαδικασία που χρειάζεται να ακολουθήσετε για να υπογράψετε με το προσωπικό σας ψηφιακό πιστοποιητικό κώδικα Java (jar file).

Απόκτηση Προσωπικού Ψηφιακού Πιστοποιητικού ΑΠΘ για ψηφιακή υπογραφή κώδικα

Για να υπογράψετε κώδικα Java χρειάζεστε ένα πιστοποιητικό που να περιέχει το χαρακτηριστικό Code Signing.

Για να αποκτήσετε Προσωπικό Ψηφιακό ΠΙστοποιητικό ΑΠΘ με attributes για Code Signing ακολουθείτε διαδικασία διαφορετική από την online έκδοση πιστοποιητικού στο www.pki.auth.gr

Θα πρέπει πρώτα να υποβάλετε μια υπεύθυνη δήλωση και στη συνέχεια να παρευρεθείτε στο ΚΗΔ για να παραλάβετε το πιστοποιητικό σας.

Εγκατάσταση πιστοποιητικού με παραμέτρους για υπογραφή κώδικα

Μόλις παραλάβετε το πιστοποιητικό σας (σε μορφή pfx ή p12) μπορείτε να το κάνετε import στο Certificate Manager των Windows (certmgr.msc). Αυτό γίνεται είτε επιλέγοντας να κάνετε import μέσα από το Certificate Manager είτε απλά εκτελώντας το pfx σας σαν να ήταν εκτελέσιμο. Σε κάθε περίπτωση το πρώτο σημείο που πρέπει να προσέξετε είναι να επιλέξετε το checkbox "Mark this key as exportable" ώστε να μπορείτε στο μέλλον να κάνετε export και το private key.

Στη συνέχεια βάζετε το πιστοποιητικό στα Personal πιστοποιητικά. Μόλις ολοκληρωθεί το import το πιστοποιητικού μπορείτε να δείτε και τα πιστοποιητικά (CAs) που υπάρχουν στην ιεραρχία.

Για την Αρχή Πιστοποίησης Harica 2011 υπάρχουν τα:

  • Aristotle University of Thessaloniki Central CA R4 και
  • Hellenic Academic and Research Institutions RootCA 2011

Ελέγχοντας τα χαρακτηριστικά του πιστοποιητικού μπορείτε να διαπιστώσετε εάν περιέχει στα Enhanced Key Usages το attribute Code Signing.

Τέλος, μπορείτε να κάνετε export το πιστοποιητικό με ή χωρίς το private key, με ή χωρίς όλα τα πιστοποιητικά της ιεραρχίας, με ή χωρίς όλα τα extended properties και στο σημείο αυτό μπορείτε να θέσετε νέο password.

Για την περίπτωση του code signing ενδιαφέρει να θέσετε το δικό σας password, να κάνετε export όλα τα properties, όλη την ιεραρχία και φυσικά το private key.

Στο σημείο αυτό έχετε ένα αρχείο PFX που είναι έτοιμο για να μετατραπεί σε Java Keystore.

Δημιουργία Java Keystore από πιστοποιητικό .pfx

Το επόμενο βήμα είναι να μετατρέψετε το υπάρχον πιστοποιητικό .pfx σε keystore (JKS: Java Keystore).
Ας υποθέσουμε ότι το πιστοποιητικό που έχετε στη διάθεσή σας είναι το my_cert.pfx και οτι βρίσκεστε στο path που βρίσκεται το εργαλείο keytool της Java. Τα βήματα που ακολουθείτε είναι τα παρακάτω: 

1) Import Certificate into Keystore file

keytool -importkeystore -srckeystore my_cert.pfx -srcstoretype pkcs12 -destkeystore my_keystore.jks -deststoretype JKS -validity 36500

Στο σημείο αυτό έχει δημιουργηθεί το αρχείο 'my_keystore.jks' που είναι το keystore που χρειαζόσαστε.

2) Change Keystore alias 

Σε αυτό το βήμα μπορείτε να δώσετε συγκεκριμένο alias στο keystore με την εντολή:

keytool -changealias -alias oldalias -destalias newalias -keystore my_keystore.jks

3) Check listed aliases in a Keystore

Για να ελέγξετε τα αποθηκευμένα aliases που υπάρχουν μέσα στο keystore μπορείτε να τρέξετε την εντολή:

keytool -list -keystore my_keystore.jks

Υπογραφή κώδικα Java

 

Το τελευταίο βήμα είναι να χρησιμοποιήσετε το keystore που φτιάξατε (my_keystore.jks) για να υπογράψετε κώδικα Java.
Μπορείτε να φτιάξετε ενα xml κ να το τρέξετε με ant μέσω του eclipse. Ένα παράδειγμα είναι το παρακάτω xml:

Διαφορετικά μπορείτε να υπογράψετε τον κώδικα (jar) χρησιμοποιώντας απευθείας το εργαλείο jarsigner. Αυτό βρίσκεται συνήθως στο path του JDK bin.

Εδώ μπορείτε να τρέξετε την εντολή:

jarsigner -keystore my_keystore.jks -storepass <your_pasaword> CodeToSign.jar <your_keystore_alias>

 

Χρήσιμα urls είναι:
http://support.godaddy.com/help/article/4780/signing-java-code
https://blogs.oracle.com/java-platform-group/entry/code_signing_understa...

 
Με εικόνες