Zum Inhalt

47-Tage-Zertifikate sind in Planung. Bist du bereit?

Jetzt handeln →

Wie signiere ich RPM-Pakete?

Signieren von RPM-Paketen

RPM (Red Hat Package Manager) ist ein Paketverwaltungssystem, das in Linux-Distributionen verwendet wird, insbesondere in Red Hat-basierten Distributionen wie Fedora und CentOS. RPM-Pakete sind Softwarepakete, die ausführbare Dateien, Bibliotheken, Dokumentation und andere Ressourcen enthalten, die für die ordnungsgemäße Funktion einer bestimmten Anwendung oder eines Dienstes auf einem Linux-System erforderlich sind.

RPM-Pakete sind komprimierte Archive, die einem bestimmten Dateiformat und einer bestimmten Namenskonvention folgen. Sie haben normalerweise die Erweiterung „.rpm“ und können mithilfe von RPM-Paketverwaltungstools installiert, aktualisiert oder entfernt werden.

Das RPM-Paketformat wird in vielen Linux-Distributionen häufig verwendet und vereinfacht die Softwareverwaltung, indem es eine standardisierte und zuverlässige Methode zum Verpacken und Verteilen von Software bietet.

Übersicht

Um RPM-Pakete mit GPG-Schlüsseln zu signieren, sind normalerweise die folgenden Schritte erforderlich:

  1. GPG-Schlüsselpaar generieren

    Der Paketverwalter oder -verteiler generiert ein GPG-Schlüsselpaar, bestehend aus einem privaten Schlüssel und einem entsprechenden öffentlichen Schlüssel. Der private Schlüssel wird sicher aufbewahrt (vorzugsweise in HSM) und sollte nicht weitergegeben werden, während der öffentliche Schlüssel weit verbreitet werden kann.

  2. RPM-Signierung konfigurieren

    Der öffentliche GPG-Schlüssel wird dem Schlüsselbund des RPM-Paketmanagers hinzugefügt, sodass dieser die mit dem entsprechenden privaten Schlüssel signierten Pakete überprüfen kann. Dieser Schritt stellt sicher, dass der Paketmanager den GPG-Schlüssel als vertrauenswürdig erkennt.

  3. RPM-Pakete signieren

    Der Paketbetreuer signiert die RPM-Pakete mit dem privaten Schlüssel, der dem GPG-Schlüsselpaar zugeordnet ist. Dieser Prozess erzeugt eine Digitale Unterschrift für jedes Paket.

  4. RPM-Pakete überprüfen

    Wenn der RPM-Paketmanager auf ein signiertes Paket stößt, verwendet er den öffentlichen GPG-Schlüssel, um die Signatur des Pakets zu überprüfen. Er prüft, ob die Signatur gültig ist und mit dem Inhalt des Pakets übereinstimmt. So wird sichergestellt, dass das Paket seit der Signierung nicht verändert oder manipuliert wurde.

Die RPM-Signierung mit GPG-Schlüsseln erhöht die Sicherheit von RPM-Paketen. Sie trägt dazu bei, die Authentizität und Integrität der Pakete zu gewährleisten, indem sie bestätigt, dass sie von der Entität signiert wurden, die den privaten Schlüssel besitzt, der mit dem öffentlichen GPG-Schlüssel verknüpft ist. Diese Methode ermöglicht es Benutzern und Systemen, die Vertrauenswürdigkeit von RPM-Paketen vor der Installation zu überprüfen und schützt vor unbefugten Änderungen oder böswilligen Manipulationen.

Voraussetzungen:

  1. Schlüsselpaar auf HSM generieren

    1. Wechseln Sie in das Verzeichnis /opt/nfast/bin

      $ cd /opt/nfast/bin

    2. Führen Sie den Befehl aus und geben Sie die entsprechenden Details ein

      $ ./generatekey pkcs11 selfcert=yes

      Hinweis: Merken Sie sich den Namen und die E-Mail-Adresse Ihres Schlüssels, da diese in den folgenden Schritten benötigt werden.

    3. Befehl ausführen

      $ ./ckcerttool -n -f pkcs11_ua4335d6933d9809f048dcf4bc47c90194f2f7ba4b_selfcert -k ua4335d6933d9809f048dcf4bc47c90194f2f7ba4b -L rpmtest

      Hier das "-f” Option entspricht „self-cert“, die „-k” Option bezieht sich auf den Schlüssel und die „-LDer Parameter „“ sollte mit dem zuvor eingegebenen Schlüsselnamen übereinstimmen.

    4. Installieren Sie gnupg-pkcs11-scd

      $ sudo apt-get install gnupg-pkcs11-scd

      Hinweis: Wenn bei der Ausführung des „sudo apt-get install“ Befehl, versuchen Sie vorher, den folgenden Befehl auszuführen.

      $ sudo apt-get update && sudo apt-get upgrade -y

    5. Konfigurieren des gnupg-Agenten

      • Bearbeiten Sie die folgenden Zeilen in der gpg-agent.conf

        $ nano ~/.gnupg/gpg-agent.conf
        - Enter the below lines and save the file
        scdaemon-program /usr/bin/gnupg-pkcs11-scd
        pinentry-program /usr/bin/pinentry

      • Bearbeiten Sie die folgenden Zeilen in der gnupg-pkcs11-scd.conf

        $ nano ~/.gnupg/gnupg-pkcs11-scd.conf
        - Enter the below lines and save the file
        providers p1
        provider-p1-library /opt/nfast/toolkits/pkcs11/libcknfast.so

    6. Laden Sie den Agenten neu

      $ gpg-agent --server gpg-connect-agent <<EOF
      > RELOADAGENT
      > EOF

    7. Holen Sie sich die GPG KEY-FRIENDLY-Zeichenfolge (des neu generierten Schlüssels)
      • Kartendetails abrufen

        $ gpg --card-status

      • Abrufen schlüsselfreundlicher Namen und Zertifikate

        $ gpg-agent --server gpg-connect-agent << EOF
        > SCD LEARN
        > EOF

    8. Importieren Sie den Schlüssel in den GPG 2-Schlüsselbund

      $gpg --expert --full-generate-key

      Hinweis: Geben Sie unter dem Parameter „Geben Sie den Keygrip ein“ den zuvor generierten Key-Friendly ein.

    9. Um den Schlüssel im GPG-Schlüsselring zu überprüfen, führen Sie den folgenden Befehl aus.

      $ gpg --list-keys

  2. Legen Sie Umgebungsvariablen für den Pfad und das Zertifikatkennwort des SSL-Client-Authentifizierungszertifikats fest.

    Hinweis: Das SSL-Client-Authentifizierungszertifikat sollte im PKCS12-Format (.p12 oder .pfx) vorliegen.

    Führen Sie den folgenden Befehl aus, um Umgebungsvariablen festzulegen:

    • Mac oder Linux

      $ export EC_Client_Auth=path_to_ssl_certificate
      $ export EC_Client_Pass=your_client_certificate_password

    • Windows

      $ set EC_Client_Auth=path_to_ssl_certificate
      $ set EC_Client_Pass=your_client_certificate_password

  3. Installieren Sie alle folgenden Anforderungen:

    • Krypto == 1.4.1
    • Kryptographie == 40.0.2
    • pycryptodome==3.16.0
    • Anfragen == 2.28.2

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

Wie verwende ich das Dienstprogramm RPM Signer?

Holen Sie sich die Version des RPM Signer Utility

Führen Sie den folgenden Befehl aus

$ python3 rpmsigner.py -v or $ python3 rpmsigner.py --version

Signieren eines RPM-Pakets

Führen Sie den folgenden Unterbefehl „sign“ aus, um ein RPM-Paket zu signieren.

Syntax:

python3 rpmsigner.py sign <file_to_be_signed> -u <user_name> -k <key_name> -i <issuer_email> -f <key_fingerprint> -a <algorithm> [-o <output_sig_file_name>]

Parameter:

  • Schild: Zu signierendes RPM-Paket.
  • -in: Ein Benutzername auf dem Code Signing Server von Encryption Consulting.
  • -k: Schlüssel-/Zertifikatname für die Signierung/Verifizierung, bereitgestellt vom Code Signing-Server von Encryption Consulting.
  • -ich: E-Mail-Adresse des Benutzers, die zum Generieren des Schlüsselpaars verwendet wird.
  • -F: GPG-Schlüssel-Fingerabdruck im Hex-Format.
  • -ein: Für die Signatur zu verwendender Algorithmus. Eine der folgenden Optionen kann verwendet werden:
    • SHA224
    • SHA256 (Standard)
    • SHA384
    • SHA512

    Wenn der Algorithmus nicht angegeben ist, wird standardmäßig SHA256 verwendet.

  • -Ö: Ausgabedatei zur Speicherung der Signatur. Dies ist ein optionaler Parameter. Wenn diese Option angegeben ist, wird eine Signaturdatei mit dem angegebenen Namen generiert. .sig
  • -H: Hilfe anzeigen.
  • -in: Ausführliche Protokolle anzeigen.

Ejemplo:

python3 rpmsigner.py sign test_rpm_signer.rpm -u admin -k RPMtestcert -i [email protected] -f 3E633D3878815FAC111CF488FC15CA0088C43155 -a SHA256 -o myFile.sig

Überprüfen eines RPM-Pakets

Führen Sie den folgenden Unterbefehl „Verify“ aus, um die Signatur eines RPM-Pakets zu überprüfen.

Syntax:

python3 rpmsigner.py verify <file_to_be_verified> -u <user_name> -k <key_name> -i <issuer_email> -f <key_fingerprint> -a <algorithm>

Ejemplo:

python3 rpmsigner.py verify test_rpm_signer.rpm -u admin -k RPMtestcert -i [email protected] -f 3E633D3878815FAC111CF488FC15CA0088C43155 -a SHA256

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

Möchten Sie wissen, wie wir Ihnen helfen können?

Verschlüsselungsberatung CodeSign Secure bietet Organisationen eine umfassende Code-Signierung Eine auf ihre individuellen Anforderungen zugeschnittene Lösung. Mit dieser Lösung können Unternehmen eine starke Code-Signatur-Richtlinie etablieren, die Sicherheitsrisiken effektiv minimiert und die Authentizität ihrer Software gewährleistet. Unser Produkt optimiert den Code-Signatur-Prozess und bietet zahlreiche Funktionen zur Verbesserung der Sicherheit.

Ein Hauptmerkmal von CodeSign Secure ist die Sicherheit Schlüsselverwaltung. Es ermöglicht Organisationen, ihre privaten Schlüssel des Code-Signatur-Zertifikats sicher zu speichern, indem es mit branchenführenden Hardware-Sicherheitsmodule (HSMs) die FIPS-zertifiziert sind. Diese Integration eliminiert die potenziellen Risiken im Zusammenhang mit gestohlenen, beschädigten oder missbrauchten Schlüsseln, da die privaten Schlüssel während des Code-Signaturvorgangs das HSM nie verlassen.