Jsign είναι ένα ανοιχτού κώδικα, ανεξάρτητο από πλατφόρμα εργαλείο Java για υπογραφή κώδικα Microsoft Authenticode. Το Jsign είναι εύκολο να ενσωματωθεί σε συστήματα κατασκευής όπως το Maven, το Gradle και το Ant, ή μπορεί να χρησιμοποιηθεί απευθείας από τη γραμμή εντολών.
Σε αυτό το πώς θα καλύψουμε τη χρήση Jsign από τη γραμμή εντολών Linux για Υπογραφή κώδικα OV / IV και Υπογραφή κώδικα EV. Επειδή το Jsign βασίζεται σε Java, μπορείτε επίσης να το χρησιμοποιήσετε σε συστήματα Windows και MacOS.
Εγκαταστήστε το Jsign
Πρώτα, θα πρέπει να κατεβάσετε και να εγκαταστήσετε το Jsign. ο Ιστότοπος Jsign περιλαμβάνει συνδέσμους σε πακέτα Debian και RPM για εύκολη εγκατάσταση στα πιο δημοφιλή συστήματα Linux, καθώς και ένα .jar
αρχείο.
Υπογραφή κώδικα OV / IV
Για την υπογραφή κωδικού OV/IV μπορείτε να χρησιμοποιήσετε ένα πιστοποιητικό που είναι αποθηκευμένο σε αρχείο Java keystore ή PKCS#12 (PFX). Σε όλα τα παραδείγματα κώδικα παρακάτω, αντικαταστήστε τις τιμές που εμφανίζονται σε ALL-CAPS με τις πραγματικές σας τιμές.
- Πρώτα, χρησιμοποιήστε το
keytool
εντολή για λήψη τουalias
τιμή για χρήση κατά την υπογραφή:keytool -list -v -keystore PKCS12 -FILE.p12 -toretype PKCS12 -storepass PKCS12 -PASSWORD
- Ελέγξτε την έξοδο του
keytool
εντολή για μια γραμμή που ξεκινά μεAlias name:
.Τύπος κλειδιού: PKCS12 Πάροχος κλειδιού καταστήματος: SUN Το βασικό κατάστημα περιέχει 1 καταχώριση Όνομα ψευδώνυμο: 1 Ημερομηνία δημιουργίας: 18 Ιαν 2021 Τύπος καταχώρησης: PrivateKeyEntry Μήκος αλυσίδας πιστοποιητικού: 4 ...
Στο παραπάνω παράδειγμα,
Alias name
is1
. - Χρησιμοποιήστε μια εντολή όπως η ακόλουθη για να υπογράψετε και να χρονική σήμανση ενός αρχείου:
jsign
εγκατεστημένη εντολή σε όλο το σύστημα:jsign --keystore KEYSTORE.p12 -- ψευδώνυμο ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
- Με τον Jsigner
.jar
αρχείο:java -jar jsign-3.1.jar --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO- ΣΗΜΑΔΙ
- Εάν η εντολή σας είναι επιτυχής, θα πρέπει να δείτε την έξοδο ως εξής:
Προσθήκη υπογραφής Authenticode στο example.exe
Εάν αντιμετωπίσετε αυτό το σφάλμα:
The timestamp certificate does not meet a minimum public key length requirement
, θα πρέπει να επικοινωνήσετε με τον προμηθευτή του λογισμικού σας για να επιτρέψετε χρονικές σημάνσεις από κλειδιά ECDSA.Εάν δεν υπάρχει τρόπος για τον προμηθευτή του λογισμικού σας να επιτρέψει τη χρήση του κανονικού τερματικού σημείου, μπορείτε να χρησιμοποιήσετε αυτό το παλαιού τύπου τελικό σημείο
http://ts.ssl.com/legacy
για να λάβετε μια χρονική σήμανση από μια μονάδα χρονοσήμανσης RSA.Υπογραφή κώδικα EV
Μπορείτε επίσης να χρησιμοποιήσετε το Jsign με πιστοποιητικό υπογραφής κώδικα EV. Το παράδειγμα εδώ χρησιμοποιεί ένα SSL.com Πιστοποιητικό υπογραφής κωδικού EV εγκατεστημένος σε α Επικυρωμένο κλειδί ασφαλείας FIPS 140-2 Κωδικός USB.
- Πρώτα, βεβαιωθείτε ότι OpenSC είναι εγκατεστημένο στο σύστημά σας, ώστε να μπορεί να επικοινωνεί με το διακριτικό σας μέσω του API PKCS # 11. Σε διανομές που βασίζονται στο Debian όπως το Ubuntu μπορείτε να εγκαταστήσετε το OpenSC με
apt
:sudo apt install installc
- Στη συνέχεια, δημιουργήστε ένα αρχείο διαμόρφωσης. Το όνομα του αρχείου είναι αυθαίρετο, αλλά για τις παρακάτω εντολές θα χρησιμοποιήσουμε
eToken.cfg
. Σημειώστε ότι η διαδρομή προςopensc-pkcs11.so
ενδέχεται να διαφέρει στην εγκατάσταση του OpenSC, οπότε ελέγξτε πριν δημιουργήσετε το αρχείο διαμόρφωσης.όνομα = περιγραφή OpenSC-PKCS11 = SunPKCS11 μέσω βιβλιοθήκης OpenSC = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
- Χρησιμοποιήστε το
keytool
εντολή για λήψη τουalias
τιμή για χρήση κατά την υπογραφή:keytool -list -v -keystore ΚΑΝΕΝΑ -storetype PKCS11 -storepass TOKEN -PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
- Ελέγξτε την έξοδο του
keytool
εντολή για μια γραμμή που ξεκινά μεAlias name:
. Εάν το διακριτικό σας περιέχει πολλά πιστοποιητικά, ελέγξτε τις ημερομηνίες ισχύος και τον εκδότη στην έξοδο έναντι του πιστοποιητικού σας. Λάβετε υπόψη ότι τα πιστοποιητικά υπογραφής κώδικα EV που εκδίδονται στο YubiKey από το SSL.com πρέπει να έχουν ψευδώνυμο όνομαCertificate for PIV Authentication
.Όνομα ψευδωνύμου: Πιστοποιητικό για έλεγχο ταυτότητας PIV Τύπος καταχώρησης: PrivateKeyEntry Μήκος αλυσίδας πιστοποιητικού: 1 Πιστοποιητικό [1]: Ιδιοκτήτης: OID.1.3.6.1.4.1.311.60.2.1.3 = US, OID.1.3.6.1.4.1.311.60.2.1.2 .2.5.4.15 = Νεβάδα, OID.20081614243 = Ιδιωτικός οργανισμός, CN = SSL Corp, SERIALNUMBER = NV2, O = SSL Corp, L = Χιούστον, ST = TX, C = ΗΠΑ CA RSA R7299, O = SSL Corp, L = Χιούστον, ST = Τέξας, C = ΗΠΑ Σειριακός αριθμός: 93f57a3bac6570c781580f63172e17 Ισχύει από: Παρ 12 Απρ 46:04:2020 EDT 17 έως: Σάβ 12 Απριλίου 46:04:2021 EDT XNUMX
- Χρησιμοποιήστε μια εντολή όπως η ακόλουθη για να υπογράψετε και να χρονική σήμανση ενός αρχείου:
jsign
εγκατεστημένη εντολή σε όλο το σύστημα:jsign --keystore eToken.cfg --alias "Certificate for PIV Authentication" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
- Με τον Jsigner
.jar
αρχείο:java -jar jsign-3.1.jar --keystore eToken.cfg --alias "Certificate for PIV Authentication" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE -ΝΑ ΥΠΟΓΡΑΨΕΙ
- Εάν η εντολή σας είναι επιτυχής, θα πρέπει να δείτε την έξοδο ως εξής:
Προσθήκη υπογραφής Authenticode στο example.exe
Εάν αντιμετωπίσετε αυτό το σφάλμα:
The timestamp certificate does not meet a minimum public key length requirement
, θα πρέπει να επικοινωνήσετε με τον προμηθευτή του λογισμικού σας για να επιτρέψετε χρονικές σημάνσεις από κλειδιά ECDSA.Εάν δεν υπάρχει τρόπος για τον προμηθευτή του λογισμικού σας να επιτρέψει τη χρήση του κανονικού τερματικού σημείου, μπορείτε να χρησιμοποιήσετε αυτό το παλαιού τύπου τελικό σημείο
http://ts.ssl.com/legacy
για να λάβετε μια χρονική σήμανση από μια μονάδα χρονοσήμανσης RSA.Επαληθεύστε την ψηφιακή υπογραφή
- Μπορείτε να επαληθεύσετε ότι η ψηφιακή υπογραφή σας είναι έγκυρη βλέποντας τις λεπτομέρειες υπογραφής στα Windows.
- Μπορείτε επίσης να χρησιμοποιήσετε SignTool στα Windows για επαλήθευση της ψηφιακής υπογραφής.
signtool.exe verify / pa 'C: \ Users \ Aaron Russell \ Desktop \ example.exe' File: C: \ Users \ Aaron Russell \ Desktop \ example.exe Ευρετήριο Αλγόριθμος Χρονική σήμανση =========== ============================= 0 sha256 RFC3161 Επιτυχής επαλήθευση: C: \ Users \ Aaron Russell \ Desktop \ example.exe