RPM (Red Hat Package Manager) is een pakketbeheersysteem dat wordt gebruikt in Linux-distributies, met name die gebaseerd op Red Hat, zoals Fedora en CentOS. RPM-pakketten zijn softwarebundels met uitvoerbare bestanden, bibliotheken, documentatie en andere bronnen die nodig zijn om een specifieke applicatie of service correct te laten functioneren op een Linux-systeem.
RPM-pakketten zijn gecomprimeerde archieven die een specifieke bestandsindeling en naamgevingsconventie volgen. Ze hebben meestal de extensie ".rpm" en kunnen worden geïnstalleerd, geüpgraded of verwijderd met behulp van RPM-pakketbeheertools.
Het RPM-pakketformaat wordt veel gebruikt in veel Linux-distributies en vereenvoudigt softwarebeheer door een gestandaardiseerde en betrouwbare methode te bieden voor het verpakken en distribueren van software.
Overzicht
Om RPM-pakketten met GPG-sleutels te ondertekenen, zijn doorgaans de volgende stappen nodig:
-
Genereer GPG-sleutelpaar
De pakketbeheerder of -distributeur genereert een GPG-sleutelpaar bestaande uit een privésleutel en een bijbehorende publieke sleutel. De privésleutel wordt veilig bewaard (bij voorkeur in HSM) en mag niet worden gedeeld, terwijl de openbare sleutel wel wijdverspreid kan worden.
-
RPM-ondertekening configureren
De openbare GPG-sleutel wordt toegevoegd aan de sleutelbos van de RPM-pakketbeheerder, zodat deze de pakketten kan verifiëren die met de bijbehorende privésleutel zijn ondertekend. Deze stap zorgt ervoor dat de pakketbeheerder de GPG-sleutel als vertrouwd herkent.
-
RPM-pakketten ondertekenen
De pakketbeheerder ondertekent de RPM-pakketten met de persoonlijke sleutel die is gekoppeld aan het GPG-sleutelpaar. Dit proces genereert een digitale handtekening voor elk pakket.
-
RPM-pakketten verifiëren
Wanneer de RPM-pakketbeheerder een ondertekend pakket tegenkomt, gebruikt hij de openbare GPG-sleutel om de handtekening van het pakket te verifiëren. Hij controleert of de handtekening geldig is en overeenkomt met de inhoud van het pakket, om er zeker van te zijn dat het pakket niet is gewijzigd of gemanipuleerd sinds de ondertekening.
RPM-ondertekening met GPG-sleutels voegt extra beveiliging toe aan RPM-pakketten. Het helpt de authenticiteit en integriteit van de pakketten vast te stellen door te bevestigen dat ze zijn ondertekend door de entiteit die de privésleutel bezit die is gekoppeld aan de openbare GPG-sleutel. Deze methode stelt gebruikers en systemen in staat de betrouwbaarheid van RPM-pakketten te verifiëren vóór installatie en beschermt tegen ongeautoriseerde wijzigingen of kwaadwillende manipulatie.
Voorwaarden
-
Genereer sleutelpaar op HSM
-
Wijzig de map naar /opt/nfast/bin
$ cd /opt/nfast/bin -
Voer de opdracht uit en voer de juiste gegevens in
$ ./generatekey pkcs11 selfcert=yesLet op: Onthoud de naam en het e-mailadres van uw sleutel. Deze hebt u in de volgende stappen nodig.
-
Voer opdracht uit
$ ./ckcerttool -n -f pkcs11_ua4335d6933d9809f048dcf4bc47c90194f2f7ba4b_selfcert -k ua4335d6933d9809f048dcf4bc47c90194f2f7ba4b -L rpmtestHier de "-f"optie komt overeen met "zelfcert", de "-k"optie verwijst naar de sleutel, en de "-LDe parameter ' moet overeenkomen met de eerder ingevoerde sleutelnaam.
-
Installeer de gnupg-pkcs11-scd
$ sudo apt-get install gnupg-pkcs11-scdLet op: Als u problemen ondervindt bij het uitvoeren van de “sudo apt-get install” Probeer eerst de volgende opdracht uit te voeren.
$ sudo apt-get update && sudo apt-get upgrade -y -
Configureer gnupg-agent
-
Bewerk de volgende regels in de 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 -
Bewerk de volgende regels in de 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
-
-
De agent opnieuw laden
$ gpg-agent --server gpg-connect-agent <<EOF
> RELOADAGENT
> EOF -
Haal de GPG KEY-FRIENDLY string op (van de nieuw gegenereerde sleutel)
-
Kaartgegevens ophalen
$ gpg --card-status -
Haal sleutelvriendelijke namen en certificaten op
$ gpg-agent --server gpg-connect-agent << EOF
> SCD LEARN
> EOF
-
-
Importeer de sleutel in de GPG 2-sleutelhanger
$gpg --expert --full-generate-keyLet op: Voer de eerder gegenereerde sleutelvriendelijke code in onder de parameter 'Voer de sleutelgrip in'.
-
Om de sleutel in de gpg-sleutelring te controleren, voert u de onderstaande opdracht uit.
$ gpg --list-keys
-
-
Stel omgevingsvariabelen in voor het pad en het certificaatwachtwoord van het SSL-clientverificatiecertificaat.
Let op: SSL-clientauthenticatiecertificaat moet in PKCS12-formaat zijn (.p12 of .pfx)
Voer de onderstaande opdracht uit om omgevingsvariabelen in te stellen:
-
Mac of 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
-
-
Voldoe aan de volgende vereisten:
- crypto==1.4.1
- cryptografie==40.0.2
- pycryptodome==3.16.0
- verzoeken==2.28.2
Hoe gebruik ik het hulpprogramma RPM Signer?
Download de versie van RPM Signer Utility
Voer de onderstaande opdracht uit
$ python3 rpmsigner.py -v or $ python3 rpmsigner.py --version
Teken een RPM-pakket
Voer de onderstaande subopdracht 'sign' uit om een RPM-pakket te ondertekenen.
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>]
parameters:
- teken: Te ondertekenen RPM-pakket.
- -in: Een gebruikersnaam op Encryption Consulting Code Signing Server.
- -k: Sleutel/certificaatnaam voor ondertekening/verificatie geleverd door de Code Signing-server van Encryption Consulting.
- -ik: E-mailadres van de gebruiker dat gebruikt wordt om een sleutelpaar te genereren.
- -F: gpg-sleutelvingerafdruk in hex-formaat.
-
-een:
Algoritme dat gebruikt moet worden voor ondertekening. Een van de onderstaande opties kan gebruikt worden:
- SHA224
- SHA256 (Standaard)
- SHA384
- SHA512
Als het algoritme niet wordt opgegeven, wordt standaard SHA256 gebruikt.
- -O: Uitvoerbestand om de handtekening op te slaan. Dit is een optionele parameter. Als deze optie is ingeschakeld, wordt een handtekeningbestand gegenereerd met de opgegeven naam. .sig
- -H: Hulp weergeven.
- -in: Uitgebreide logs weergeven.
Voorbeeld:
python3 rpmsigner.py sign test_rpm_signer.rpm -u admin -k RPMtestcert -i [email protected] -f
3E633D3878815FAC111CF488FC15CA0088C43155 -a SHA256 -o myFile.sig
Een RPM-pakket verifiëren
Voer de onderstaande subopdracht verify uit om de handtekening van een RPM-pakket te verifiëren.
Syntax:
python3 rpmsigner.py verify <file_to_be_verified> -u <user_name> -k <key_name> -i <issuer_email> -f <key_fingerprint> -a <algorithm>
Voorbeeld:
python3 rpmsigner.py verify test_rpm_signer.rpm -u admin -k RPMtestcert -i [email protected] -f
3E633D3878815FAC111CF488FC15CA0088C43155 -a SHA256
Wilt u weten hoe wij u kunnen helpen?
Encryptie Consulting's CodeSign Secure biedt organisaties een uitgebreid code-ondertekening Een oplossing die is afgestemd op hun unieke vereisten. Door deze oplossing te gebruiken, kunnen organisaties een sterk code-ondertekeningsbeleid opzetten dat beveiligingsrisico's effectief beperkt en de authenticiteit van hun software garandeert. Ons product stroomlijnt het code-ondertekeningsproces en biedt een reeks functies die zijn ontworpen om de beveiliging te verbeteren.
Een belangrijk kenmerk van CodeSign Secure is veiligheid sleutelbeheer. Het stelt organisaties in staat om hun persoonlijke sleutels van het code-ondertekeningscertificaat veilig op te slaan door integratie met toonaangevende Hardware-beveiligingsmodules (HSM's) die FIPS-gecertificeerd zijn. Deze integratie elimineert de potentiële risico's die gepaard gaan met gestolen, beschadigde of misbruikte sleutels, aangezien de privésleutels de HSM nooit verlaten tijdens de codeondertekening.
