Publicerad: april 2025 | Uppdaterad: augusti 2026
OpenSSL-signering med PKCS#11 är praxisen att använda OpenSSLs kommandoradsgränssnitt för att utföra kryptografiska signeringsoperationer medan den faktiska privata nyckeln finns kvar i en hårdvarusäkerhetsmodul eller token, och aldrig vidrör disken. Ett PKCS#11-omslag överbryggar OpenSSL till hårdvaran, så välbekanta OpenSSL-kommandon avlastar signeringen till certifierad, manipulationssäker hårdvara.
Beskrivning
När det gäller att säkra digital kommunikation eller verifiera dataintegriteten är OpenSSL ett av de självklara verktygen för utvecklare och säkerhetsexperter. Oavsett om du signerar filer, skapar certifikat eller verifierar digitala signaturer, erbjuder OpenSSL ett flexibelt och kraftfullt kommandoradsgränssnitt för att hantera kryptografiska operationer.
Men det finns en hake – som standard fungerar OpenSSL med programvarubaserade nycklar som lagras på disk. Även om det kan fungera bra för utveckling eller intern testning är det inte idealiskt för produktionsmiljöer där säkerheten för privata nycklar är avgörande. Det är här PKCS#11 kliver in i bilden.
PKCS#11 är ett standard-API som låter programvara interagera med kryptografiska tokens som smartkort, USB-tokens och HSM:er (Hardware Security Modules) . Dessa tokens är utformade för att lagra nycklar säkert och utföra operationer som signering eller kryptering direkt i enheten – vilket innebär att din privata nyckel aldrig lämnar hårdvaran.
Att integrera OpenSSL med en PKCS#11-kompatibel enhet är inte alltid plug-and-play. Det är därför vi använder ett PKCS#11-omslag, som fungerar som en brygga mellan OpenSSL och den hårdvarubaserade kryptografiska leverantören. Omslaget gör det möjligt att köra välbekanta OpenSSL-kommandon samtidigt som de faktiska signeringsåtgärderna avlastas till HSM eller token.
I den här bloggen kommer jag att guida dig genom hur du utför OpenSSL-baserad signering med CodeSign Secure and Encryption Consultings PKCS#11-omslag på både Ubuntu och Windows, och täcker installation, konfiguration och körning. Oavsett om du arbetar i företagsmiljöer eller bygger en säker signeringsprocess för din app, kommer den här installationen att hjälpa dig att stärka din kryptografiska hygien utan en brant inlärningskurva.
Ubuntu vs. Windows-installation: Snabb jämförelse
Innan vi går in på de plattformsspecifika stegen, här är hur de två inställningarna skiljer sig åt i korthet.
| Steg | ubuntu | Windows |
|---|---|---|
| Omslagskälla | Avsnittet CodeSign Secure v3.02 Signeringsverktyg | Avsnittet CodeSign Secure v3.02 Signeringsverktyg |
| OpenSSL-installation | sudo apt install -y openssl libengine-pkcs11-openssl gnutls-bin xxd | Ladda ner Win32 OpenSSL-installationsprogrammet från slproweb.com |
| PKCS#11-motor | Levereras med distropaketet (libpkcs11.so, sökvägen varierar beroende på Ubuntu-version) | Måste kompileras manuellt från OpenSCs libp11 via MSYS2 |
| Konfigurationsfil | openssl.conf, sökväg inställd via OPENSSL_CONF miljöfaktor | openssl.cnf in C:\Program Files\Common Files\SSL |
| Signera kommando | openssl pkeyutl -engine pkcs11 -sign ... | openssl dgst -engine pkcs11 -keyform engine -sign ... |
OpenSSL PKCS11 – Ubuntu
Installation på klientsystem
Steg 1: Gå till EC CodeSign Secures avsnitt v3.02 Signing Tools och ladda ner PKCS11 Wrapper för Ubuntu.

Steg 2: Generera sedan ett P12-autentiseringscertifikat från rullgardinsmenyn Systeminställningar > Användare > Generera autentiseringscertifikat.

Steg 3: Gå till ditt Ubuntu-klientsystem och redigera konfigurationsfilerna ( ec_pkcs11client.ini och pkcs11properties.cfg ) som laddats ner i PKCS11 Wrapper.

Förutsättningar för Ubuntu-systemet
Nu ska vi installera några förutsättningar i ditt klientsystem för att köra PKCS11 Wrapper.
Steg 1: Installera OpenSSL: sudo apt install -y openssl libengine-pkcs11-openssl gnutls-bin xxd

Steg 2: Skapa en konfigurationsfil för PKCS#11

Steg 3: Ange lämpliga uppgifter i konfigurationsfilen:
openssl_conf = openssl_init
[openssl_init]
motorer = motorsektion
[motor_sektion]
pkcs11 = pkcs11_sektion
[pkcs11_section]
#Sökväg till OpenSSL PKCS11-motorn
dynamisk_sökväg = " "
MODUL_SÖKVÄG = “ "

Sökvägen till ec_pkcs11client.so beror på var du lagrar filen.
Sökvägen till libpkcs11.s beror på din Linuxdistribution och version:
- Ubuntu 18.04: /usr/lib/x86_64-linux-gnu/engines-1.1/libpkcs11.so
- Ubuntu 20.04: /usr/lib/x86_64-linux-gnu/engines-1.1/libpkcs11.so
- Ubuntu 22.04: /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
Steg 4: Ställ in miljövariabeln för openssl.conf-filen
exportera OPENSSL_CONF=

Utför signering och verifiering med PKCS11 Wrapper
Nu när alla konfigurationer och förutsättningar har installerats, låt oss först utföra signeringsåtgärden.
Signeringskommandot kommer att se ut ungefär så här (se till att du bara kör det här kommandot i mappen där din PKCS11 Wrapper är installerad):
openssl pkeyutl -engine pkcs11 -inloggning -inkey “pkcs11:objekt= ;typ=privat” -nyckelformulärsmotor -ut
Till exempel: openssl pkeyutl -engine pkcs11 -sign -in testfile.txt -inkey “pkcs11:object=CertEnrollTest;type=private” -keyform engine -out readme.sign.sha256
Efter att filen har signerats, låt oss verifiera den med det här kommandot:
openssl pkeyutl -engine pkcs11 -verify -in -inkey “pkcs11:objekt= ;typ=privat” -nyckelformulärsmotor -sigfil
Till exempel: openssl pkeyutl -engine pkcs11 -verify -in testfile.txt -inkey “pkcs11:object=CertEnrollTest;type=private” -keyform engine -sigfile readme.sign.sha256

OpenSSL PKCS11 – Windows
Installation på klientsystem
Steg 1: Gå till EC CodeSign Secures avsnitt v3.02 Signeringsverktyg och ladda ner PKCS11 Wrapper för Windows.

Steg 2: Generera sedan ett P12-autentiseringscertifikat från rullgardinsmenyn Systeminställningar > Användare > Generera autentiseringscertifikat.

Steg 3: Gå till ditt Windows-klientsystem och redigera konfigurationsfilerna ( ec_pkcs11client.ini och pkcs11properties.cfg ) som laddats ner i PKCS11 Wrapper.



Förutsättningar för Windows-systemet
Nu ska vi installera några förutsättningar i ditt klientsystem för att köra PKCS11 Wrapper.
Steg 1: Ladda ner och installera OpenSSL på ditt system härifrån.

Steg 2: Kompilera OpenSSL PKCS#11 manuellt med hjälp av dessa metoder
- Ladda ner och installera msys2-i686-*.exe från https://msys2.github.io/
- Starta en MSYS2 MSYS-konsol från Start meny
Använd detta kommando:
pacman -S git pkg-config libtool autoconf automake make gcc openssl-devel git clone https://github.com/OpenSC/libp11.git cd libp11 autoreconf -fi ./configure –prefix=/usr/local make && make install
Steg 3: I konfigurationsfilen ( openssl.cnf ) i mappen C:\Program Files\Delade filer\SSL
Lägg till dessa rader:
openssl_conf = openssl_init
[openssl_init]
motorer = motorsektion
[motor_sektion]
pkcs11 = pkcs11_sektion
[pkcs11_section]
#Sökväg till den kompilerade OpenSSL PKCS11 från OpenSC – libp11
dynamisk_sökväg = MODUL_SÖKVÄG =


Utför signering och verifiering med PKCS11 Wrapper
Nu när alla konfigurationer och förutsättningar har installerats, låt oss först utföra signeringsåtgärden.
Signeringskommandot kommer att se ut ungefär så här (se till att du bara kör det här kommandot i mappen där din PKCS11 Wrapper är installerad):
openssl dgst -engine pkcs11 -keyform engine -sign “pkcs11:object= ;typ=offentlig” -sha256 -ut
Till exempel:
openssl dgst -engine pkcs11 -keyform engine -sign “pkcs11:object=CertEnrollTest;type=public” -sha256 -out test-signed.bin testfile.txt
Efter att filen har signerats, låt oss verifiera den med det här kommandot:
openssl dgst -engine pkcs11 -keyform engine -verify “pkcs11:object= ;typ=offentlig” -sha256 -signatur
Till exempel:
openssl dgst -engine pkcs11 -keyform engine -verify “pkcs11:object=CertEnrollTest;type=public” -sha256 -signature test-signed.bin testfile.txt

Säkerhetsöverväganden
När du arbetar med kryptografiska operationer – särskilt digital signering – är skyddet av dina privata nycklar absolut oförhandlingsbart. En läckt eller komprometterad privat nyckel är i stort sett ett värsta tänkbara scenario eftersom det öppnar dörren för personifiering, obehörig åtkomst och en hel del förtroendeproblem.
Så, låt oss prata om några bästa metoder för att skydda dina nycklar (och ditt rykte):
- Förvara aldrig privata nycklar i vanliga filerDet kan vara bekvämt, men att lagra privata nycklar som platta filer på disk (även med filsystembehörigheter) är riskabelt. Allt som krävs är ett felkonfigurerat säkerhetskopieringssystem eller en nyfiken administratör för att av misstag avslöja dem. Detta är inte en teoretisk risk: GitGuardians rapport om utbredningen av hemligheter från 2026 fann att 28.65 miljoner nya hårdkodade hemligheter exponerades på den offentliga GitHub enbart under 2025, en ökning med 34 % jämfört med föregående år., och mediantiden för ett team att faktiskt åtgärda en läckt hemlighet är 94 dagar, enligt Verizons rapport om utredningar av dataintrång från 2025, ett gap som angripare kan utnyttja långt innan någon märker det. Använd istället säkra nyckellagringsmekanismer – helst hårdvarubaserade.
- Använd HSM:er eller säkra tokens när det är möjligtHårdvarusäkerhetsmoduler (HSM) och smartkort är specifikt byggda för säker nyckellagring. De lagrar inte bara nycklar – de utför operationer (som signering eller dekryptering) inuti enheten, så att den privata nyckeln aldrig lämnar enheten. Detta ger ett starkt skyddslager, särskilt mot skadlig programvara eller insiderhot.
- Lås åtkomst till dina PKCS#11-modulerSe till att endast behöriga användare eller tjänster kan kommunicera med PKCS#11-gränssnittet. Använd PIN-koder, rollbaserad åtkomst och korrekt granskning för att förhindra missbruk. Om din wrapper eller HSM-leverantör stöder loggning, aktivera det – du vill ha ett tydligt spår av vem som åtkom vad och när.
- Undvik att lämna tokens olåstaDet är frestande att skripta saker och lämna tokens olåsta för att "hålla saker igång", men det är riskabelt. Undersök istället automatiserade upplåsningsmekanismer som fortfarande respekterar sessionsisolering eller verktyg som säkert cachar inloggningsuppgifter under korta perioder med strikta åtkomstkontroller.
- Validera vad du signerarDet låter självklart, men se till att du inte signerar slumpmässiga eller skadliga filer av misstag. Bygg in förnuftskontroller eller använd verifieringssteg före signering för att säkerställa att endast godkänt innehåll går igenom ditt signeringsflöde.
I slutändan är kryptografiska verktyg bara så säkra som hur de används. PKCS#11 ger dig möjligheten att avlasta kritiska operationer till hårdvara – men du måste fortfarande respektera grunderna: skydda dina nycklar, begränsa åtkomst och tänk alltid steget före en angripare.
Vanliga frågor om partihandel med mat och dryck
Vad är PKCS#11, och varför behöver OpenSSL en wrapper för det?
PKCS#11 är ett standard-API för att kommunicera med kryptografiska tokens som HSM:er och smartkort. OpenSSL använder inte PKCS#11 som standard för hårdvarubaserade nycklar, så en wrapper fungerar som brygga, vilket låter välbekanta OpenSSL-kommandon avlasta själva signeringsoperationen till hårdvaran.
Lämnar den privata nyckeln någonsin HSM vid signering med OpenSSL och PKCS#11?
Nej. HSM utför signeringsoperationen internt och returnerar endast den resulterande signaturen. Själva den privata nyckeln genereras, lagras och används helt inuti hårdvaran och exporteras aldrig i användbar form.
Vad är den största skillnaden mellan Ubuntu och Windows-inställningarna för EC:s PKCS#11-omslag?
På Ubuntu levereras OpenSSL PKCS#11-motorn med distributionens pakethanterare. På Windows måste du kompilera den manuellt från OpenSCs libp11-projekt med MSYS2, eftersom det inte finns någon motsvarande förpaketerad motor tillgänglig direkt.
Varför skiljer sig sökvägen till libpkcs11.so mellan Ubuntu-versioner?
Ubuntu 18.04 och 20.04 använder OpenSSL 1.1:s motorkatalog (engines-1.1), medan Ubuntu 22.04 levererar OpenSSL 3.x, vilket flyttade motorer till engines-3 Att peka konfigurationsfilen på fel sökväg är ett av de vanligaste installationsfelen.
Vilket OpenSSL-kommando utför egentligen signeringsoperationen när PKCS#11 har konfigurerats?
På Ubuntu är det openssl pkeyutl -engine pkcs11 -sign med nyckeln refererad via en pkcs11:object=... URI. På Windows är motsvarigheten openssl dgst -engine pkcs11 -keyform engine -signBåda avlastar den faktiska kryptografiska operationen till HSM via omslaget.
Är det någonsin acceptabelt att lagra privata nycklar som vanliga filer på disk?
Inte för produktionssigneringsnycklar. Även med filsystembehörigheter är en vanlig filnyckel en felkonfigurerad säkerhetskopia eller ett komprometterat konto bort från exponering. Det kan vara tolererbart för kortlivade utvecklings- eller testnycklar, men produktions- och releasesigneringsnycklar bör alltid finnas i en HSM eller säker token.
Hur vanliga är incidenter med stöld av privata nycklar och autentiseringsuppgifter vid kodsignering?
Vanligt och växande. GitGuardians rapport om utbredningen av hemligheter från 2026 fann att 28.65 miljoner nya hårdkodade hemligheter exponerades på den offentliga GitHub enbart under 2025, en ökning med 34 % jämfört med föregående år, och mediantiden för åtgärdande av en läckt hemlighet är 94 dagar, enligt Verizons DBIR från 2025, vilket lämnar ett långt fönster för utnyttjande.
Vilken CodeSign Secure-version levererar för närvarande detta PKCS#11-omslag?
CodeSign Secure v3.02, som också lade till inbyggd LMS- och ML-DSA-post-kvantumsignering, GPG2-integration, Debian/RPM-paketsignering och stöd för jsign/jarsigner utöver PKCS#11-omslaget.
Vilka andra signeringsverktyg stöder CodeSign Secure v3.02 utöver PKCS#11-omslaget?
Version 3.02 lade till GPG2-signering via PKCS#11, Debian (.deb) och RPM-paketsignering, jsign för Windows-binärfiler (EXE, MSI) och jarsigner för Java Archive (JAR)-filer, tillsammans med inbyggd Fortanix HSM-integration.
Slutsats
Att signera med OpenSSL med PKCS#11 kan verka lite tekniskt till en början, men när du väl har konfigurerat det – antingen på Ubuntu eller Windows – är det ett smidigt och säkert arbetsflöde. Genom att integrera ett PKCS#11-omslag kan du flytta känsliga signeringsåtgärder från programvaruskiktet till säker hårdvara som HSM:er eller tokens. Detta skyddar inte bara dina privata nycklar utan hjälper dig också att uppfylla efterlevnadsstandarder och bästa säkerhetspraxis.
Om du letar efter ett effektiviserat sätt att komma igång gör EC:s PKCS#11-omslag integrationsprocessen mycket enklare. Det är byggt för att vara tillförlitligt, plattformsoberoende och kompatibelt med en mängd olika HSM:er – så att du kan fokusera mer på att säkra din verksamhet och mindre på att hantera lågnivå-VVS. I dagens hotbild är det att skydda dina nycklar att skydda ditt företag. Oavsett om du signerar kod, dokument eller certifikat är det ett smart och framtidssäkert drag att kombinera OpenSSL med ett robust PKCS#11-omslag som EC:s.
- Beskrivning
- Ubuntu vs. Windows-installation: Snabb jämförelse
- OpenSSL PKCS11 – Ubuntu
- OpenSSL PKCS11 – Windows
- Säkerhetsöverväganden
- Vanliga frågor om partihandel med mat och dryck
- Vad är PKCS#11, och varför behöver OpenSSL en wrapper för det?
- Lämnar den privata nyckeln någonsin HSM vid signering med OpenSSL och PKCS#11?
- Vad är den största skillnaden mellan Ubuntu och Windows-inställningarna för EC:s PKCS#11-omslag?
- Varför skiljer sig sökvägen till libpkcs11.so mellan Ubuntu-versioner?
- Vilket OpenSSL-kommando utför egentligen signeringsoperationen när PKCS#11 har konfigurerats?
- Är det någonsin acceptabelt att lagra privata nycklar som vanliga filer på disk?
- Hur vanliga är incidenter med stöld av privata nycklar och autentiseringsuppgifter vid kodsignering?
- Vilken CodeSign Secure-version levererar för närvarande detta PKCS#11-omslag?
- Vilka andra signeringsverktyg stöder CodeSign Secure v3.02 utöver PKCS#11-omslaget?
- Slutsats
