Υπογραφή κώδικα Microsoft Authenticode σε Linux με Jsign

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

Αυτή η ενότητα ισχύει μόνο για πιστοποιητικά υπογραφής κωδικών Ατομικής Επικύρωσης (IV) και Επικύρωσης Οργανισμού (OV) που παραγγέλθηκαν πριν από την 1η Ιουνίου 2023. Έναρξη 1 Ιουνίου 2023, τα πιστοποιητικά υπογραφής κωδικών IV και OV της SSL.com έχουν ξεκινήσει να εκδίδονται είτε σε κουπόνια USB του Ομοσπονδιακού Προτύπου Επεξεργασίας Πληροφοριών 140-2 (FIPS 140-2) είτε μέσω της υπηρεσίας υπογραφής κώδικα cloud eSigner. 

Για την υπογραφή κωδικού OV/IV μπορείτε να χρησιμοποιήσετε ένα πιστοποιητικό που είναι αποθηκευμένο σε αρχείο Java keystore ή PKCS#12 (PFX). Σε όλα τα παραδείγματα κώδικα παρακάτω, αντικαταστήστε τις τιμές που εμφανίζονται σε ALL-CAPS με τις πραγματικές σας τιμές.

  1. Πρώτα, χρησιμοποιήστε το keytool εντολή για λήψη του alias τιμή για χρήση κατά την υπογραφή:
    keytool -list -v -keystore PKCS12 -FILE.p12 -toretype PKCS12 -storepass PKCS12 -PASSWORD
  2. Ελέγξτε την έξοδο του keytool εντολή για μια γραμμή που ξεκινά με Alias name:.
    Τύπος κλειδιού: PKCS12 Πάροχος κλειδιού καταστήματος: SUN Το βασικό κατάστημα περιέχει 1 καταχώριση Όνομα ψευδώνυμο: 1 Ημερομηνία δημιουργίας: 18 Ιαν 2021 Τύπος καταχώρησης: PrivateKeyEntry Μήκος αλυσίδας πιστοποιητικού: 4 ...

    Στο παραπάνω παράδειγμα, Alias name is 1.

  3. Χρησιμοποιήστε μια εντολή όπως η ακόλουθη για να υπογράψετε και να χρονική σήμανση ενός αρχείου:
    • 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- ΣΗΜΑΔΙ
  4. Εάν η εντολή σας είναι επιτυχής, θα πρέπει να δείτε την έξοδο ως εξής:
    Προσθήκη υπογραφής Authenticode στο example.exe
Σημείωση: Από προεπιλογή, το SSL.com υποστηρίζει χρονικές σημάνσεις από κλειδιά ECDSA.

Εάν αντιμετωπίσετε αυτό το σφάλμα: 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.

  1. Πρώτα, βεβαιωθείτε ότι OpenSC είναι εγκατεστημένο στο σύστημά σας, ώστε να μπορεί να επικοινωνεί με το διακριτικό σας μέσω του API PKCS # 11. Σε διανομές που βασίζονται στο Debian όπως το Ubuntu μπορείτε να εγκαταστήσετε το OpenSC με apt:
    sudo apt install installc
  2. Στη συνέχεια, δημιουργήστε ένα αρχείο διαμόρφωσης. Το όνομα του αρχείου είναι αυθαίρετο, αλλά για τις παρακάτω εντολές θα χρησιμοποιήσουμε eToken.cfg. Σημειώστε ότι η διαδρομή προς opensc-pkcs11.so ενδέχεται να διαφέρει στην εγκατάσταση του OpenSC, οπότε ελέγξτε πριν δημιουργήσετε το αρχείο διαμόρφωσης.
    όνομα = περιγραφή OpenSC-PKCS11 = SunPKCS11 μέσω βιβλιοθήκης OpenSC = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
  3. Χρησιμοποιήστε το keytool εντολή για λήψη του alias τιμή για χρήση κατά την υπογραφή:
    keytool -list -v -keystore ΚΑΝΕΝΑ -storetype PKCS11 -storepass TOKEN -PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
  4. Ελέγξτε την έξοδο του 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
  5. Χρησιμοποιήστε μια εντολή όπως η ακόλουθη για να υπογράψετε και να χρονική σήμανση ενός αρχείου:
    • 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 -ΝΑ ΥΠΟΓΡΑΨΕΙ
  6. Εάν η εντολή σας είναι επιτυχής, θα πρέπει να δείτε την έξοδο ως εξής:
    Προσθήκη υπογραφής Authenticode στο example.exe
Σημείωση: Από προεπιλογή, το SSL.com υποστηρίζει χρονικές σημάνσεις από κλειδιά ECDSA.

Εάν αντιμετωπίσετε αυτό το σφάλμα: The timestamp certificate does not meet a minimum public key length requirement, θα πρέπει να επικοινωνήσετε με τον προμηθευτή του λογισμικού σας για να επιτρέψετε χρονικές σημάνσεις από κλειδιά ECDSA.

Εάν δεν υπάρχει τρόπος για τον προμηθευτή του λογισμικού σας να επιτρέψει τη χρήση του κανονικού τερματικού σημείου, μπορείτε να χρησιμοποιήσετε αυτό το παλαιού τύπου τελικό σημείο http://ts.ssl.com/legacy για να λάβετε μια χρονική σήμανση από μια μονάδα χρονοσήμανσης RSA.

Επαληθεύστε την ψηφιακή υπογραφή

  1. Μπορείτε να επαληθεύσετε ότι η ψηφιακή υπογραφή σας είναι έγκυρη βλέποντας τις λεπτομέρειες υπογραφής στα Windows.
    Η ψηφιακή υπογραφή είναι εντάξει
  2. Μπορείτε επίσης να χρησιμοποιήσετε 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

Εγγραφείτε στο ενημερωτικό δελτίο του SSL.com

Μην χάσετε νέα άρθρα και ενημερώσεις από το SSL.com

Μείνετε ενημερωμένοι και ασφαλείς

SSL.com είναι παγκόσμιος ηγέτης στον τομέα της κυβερνοασφάλειας, PKI και ψηφιακά πιστοποιητικά. Εγγραφείτε για να λαμβάνετε τα πιο πρόσφατα νέα του κλάδου, συμβουλές και ανακοινώσεις προϊόντων από SSL.com.

Θα θέλαμε τα σχόλιά σας

Συμμετάσχετε στην έρευνά μας και πείτε μας τις σκέψεις σας για την πρόσφατη αγορά σας.