RPM (Red Hat Package Manager) är ett pakethanteringssystem som används i Linuxdistributioner, särskilt de som är baserade på Red Hat, såsom Fedora och CentOS. RPM-paket är programvarupaket som innehåller körbara filer, bibliotek, dokumentation och andra resurser som krävs för att en specifik applikation eller tjänst ska fungera korrekt på ett Linux-system.
RPM-paket är komprimerade arkiv som följer ett specifikt filformat och namngivningskonvention. De har vanligtvis tillägget ".rpm" och kan installeras, uppgraderas eller tas bort med hjälp av RPM-pakethanteringsverktyg.
RPM-paketformatet används flitigt i många Linuxdistributioner och förenklar programvaruhantering genom att tillhandahålla en standardiserad och pålitlig metod för att paketera och distribuera programvara.
Översikt
För att signera RPM-paket med GPG-nycklar krävs vanligtvis följande steg:
-
Generera GPG-nyckelpar
Paketansvarig eller distributör genererar ett GPG-nyckelpar bestående av en privat nyckel och en motsvarande publik nyckel. Den privata nyckeln förvaras säkert (helst i HSM) och bör inte delas, medan den publika nyckeln kan distribueras brett.
-
Konfigurera RPM-signering
Den publika GPG-nyckeln läggs till i RPM-pakethanterarens nyckelring, vilket gör att den kan verifiera paketen som signerats med motsvarande privata nyckel. Detta steg säkerställer att pakethanteraren känner igen GPG-nyckeln som betrodd.
-
Signera RPM-paket
Paketansvarig signerar RPM-paketen med den privata nyckeln som är associerad med GPG-nyckelparet. Denna process genererar en digital signatur för varje paket.
-
Verifiera RPM-paket
När RPM-pakethanteraren stöter på ett signerat paket använder den GPG:s publika nyckel för att verifiera paketets signatur. Den kontrollerar om signaturen är giltig och matchar paketets innehåll, och säkerställer att den inte har ändrats eller manipulerats sedan den signerades.
RPM-signering med GPG-nycklar ger ytterligare säkerhet till RPM-paket. Det hjälper till att fastställa paketens äkthet och integritet genom att bekräfta att de signerades av den enhet som innehar den privata nyckeln som är associerad med den offentliga GPG-nyckeln. Denna metod gör det möjligt för användare och system att verifiera RPM-paketens tillförlitlighet före installation och skyddar mot obehöriga modifieringar eller skadlig manipulation.
Förutsättningar
-
Generera nyckelpar på HSM
-
Ändra katalogen till /opt/nfast/bin
$ cd /opt/nfast/bin -
Kör kommandot och ange lämpliga uppgifter
$ ./generatekey pkcs11 selfcert=yesObs: Kom ihåg din nyckels namn och e-postadress, eftersom de kommer att krävas i de efterföljande stegen.
-
Kör kommando
$ ./ckcerttool -n -f pkcs11_ua4335d6933d9809f048dcf4bc47c90194f2f7ba4b_selfcert -k ua4335d6933d9809f048dcf4bc47c90194f2f7ba4b -L rpmtestHär, "-f” alternativet motsvarar ”självcertifiering”, alternativet ”-k”-alternativet hänvisar till nyckeln och alternativet ”-LParametern ” ska matcha det nyckelnamn som angavs tidigare.
-
Installera gnupg-pkcs11-scd
$ sudo apt-get install gnupg-pkcs11-scdObs: Om du stöter på några problem med att utföra "sudo apt-get install" kommandot, försök att köra följande kommando i förväg.
$ sudo apt-get update && sudo apt-get upgrade -y -
Konfigurera gnupg-agenten
-
Redigera följande rader i 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 -
Redigera följande rader i 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
-
-
Ladda om agenten
$ gpg-agent --server gpg-connect-agent <<EOF
> RELOADAGENT
> EOF -
Hämta GPG KEY-FRIENDLY-strängen (för den nyligen genererade nyckeln)
-
Hämta kortuppgifter
$ gpg --card-status -
Hämta nyckelvänliga namn och certifikat
$ gpg-agent --server gpg-connect-agent << EOF
> SCD LEARN
> EOF
-
-
Importera nyckeln till GPG 2-nyckelringen
$gpg --expert --full-generate-keyObs: Ange nyckelvänlighet som genererades tidigare under parametern "Ange nyckelgreppet".
-
För att kontrollera nyckeln i gpg-nyckelringen, kör kommandot nedan.
$ gpg --list-keys
-
-
Ange miljövariabler för sökvägen och certifikatlösenordet för SSL-klientautentiseringscertifikatet.
Obs: SSL-klientautentiseringscertifikatet ska vara i PKCS12-formatet (.p12 eller .pfx)
Kör kommandot nedan för att ställa in miljövariabler:
-
Mac eller 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
-
-
Installera alla följande krav:
- krypto==1.4.1
- kryptografi==40.0.2
- pycryptodome==3.16.0
- förfrågningar==2.28.2
Hur använder man RPM Signer-verktyget?
Hämta versionen av RPM Signer Utility
Kör kommandot nedan
$ python3 rpmsigner.py -v or $ python3 rpmsigner.py --version
Skriv under ett RPM-paket
Kör underkommandot signera nedan för att signera ett RPM-paket.
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>]
Parametrar:
- skylt: RPM-paketet ska signeras.
- -i: Ett användarnamn på Encryption Consulting Code Signing Server.
- -k: Nyckel-/certifikatnamn för signering/verifiering tillhandahållet av Encryption Consulting Code Signing-servern.
- -jag: Användarens e-postadress som används för att generera nyckelpar.
- -F: gpg-nyckelfingeravtryck i hex-format.
-
-till:
Algoritm som ska användas för signering. Ett av nedanstående alternativ ska användas:
- SHA224
- SHA256 (Standard)
- SHA384
- SHA512
Om algoritmen inte anges kommer SHA256 att användas som standard.
- -antingen: Utdatafil för att lagra signatur. Detta är en valfri parameter. Om det här alternativet anges genereras en signaturfil enligt det angivna namnet. .sig
- -h: Visa hjälp.
- -v: Visa utförliga loggar.
Exempel:
python3 rpmsigner.py sign test_rpm_signer.rpm -u admin -k RPMtestcert -i test@ec.com -f
3E633D3878815FAC111CF488FC15CA0088C43155 -a SHA256 -o myFile.sig
Verifiera ett RPM-paket
Kör nedanstående underkommando verify för att verifiera signaturen för ett RPM-paket.
Syntax:
python3 rpmsigner.py verify <file_to_be_verified> -u <user_name> -k <key_name> -i <issuer_email> -f <key_fingerprint> -a <algorithm>
Exempel:
python3 rpmsigner.py verify test_rpm_signer.rpm -u admin -k RPMtestcert -i test@ec.com -f
3E633D3878815FAC111CF488FC15CA0088C43155 -a SHA256
Vill du veta hur vi kan hjälpa dig?
Krypteringskonsulttjänster CodeSign Secure ger organisationer en heltäckande kodsignering lösning skräddarsydd för deras unika behov. Genom att använda denna lösning kan organisationer etablera en stark kodsigneringspolicy som effektivt minskar säkerhetsrisker och säkerställer äktheten hos deras programvara. Vår produkt effektiviserar kodsigneringsprocessen och erbjuder en rad funktioner utformade för att förbättra säkerheten.
En viktig funktion i CodeSign Secure är säkerheten nyckelhantering. Det gör det möjligt för organisationer att säkert lagra sina privata nycklar till kodsigneringscertifikatet genom att integrera med branschledande Hårdvarusäkerhetsmoduler (HSM) som är FIPS-certifierade. Denna integration eliminerar de potentiella riskerna i samband med stulna, skadade eller missbrukade nycklar, eftersom de privata nycklarna aldrig lämnar HSM under kodsigneringsoperationen.
