Questa guida fornisce istruzioni per configurare OpenSSL in modo da utilizzare una chiave Cloud HSM su Debian 11 (Bullseye). Queste istruzioni sono generalmente applicabili anche se stai utilizzando un altro sistema operativo o ambiente, ma tieni presente che potrebbero verificarsi le differenze.
Requisiti
Per iniziare, scarica una release della libreria. Per ulteriori dettagli sulla libreria PKCS #11, consulta la guida dell'utente.
Prima di iniziare, installa il pacchetto libengine-pkcs11-openssl
.
sudo apt-get update
sudo apt-get install libengine-pkcs11-openssl
Configurazione
Impostazione della variabile di ambiente PKCS11_MODULE_PATH.
Affinché openssl
possa utilizzare la nostra libreria PKCS #11, imposta la variabile di ambiente PKCS11_MODULE_PATH
:
export PKCS11_MODULE_PATH="/path/to/libkmsp11.so"
Per impostare definitivamente la variabile di ambiente, aggiungi export PKCS11_MODULE_PATH="/path/to/libkmsp11.so"
a /etc/profile
eseguendo il seguente comando:
echo 'export PKCS11_MODULE_PATH="/path/to/libkmsp11.so"' | sudo tee -a /etc/profile
Configurazione della libreria PKCS #11
La libreria PKCS #11 richiede un file di configurazione YAML per individuare Cloud KMS Google Cloud. Il file YAML deve configurare almeno un token PKCS #11.
Se utilizzi OpenSSL con un altro processo che potrebbe andare in biforcazione (ad
come Apache o Nginx), devi anche assicurarti che
Il campo refresh_interval_secs
non viene configurato o è impostato su 0.
File di configurazione di esempio:
---
tokens:
- key_ring: "projects/my-project/locations/us-central1/keyRings/my-keyring"
Con questa configurazione, tutte le chiavi di firma e decrittografia asimmetriche in
my-keyring
saranno disponibili nella raccolta.
Devi impostare le autorizzazioni sul file di configurazione in modo che sia scrivibile solo dal proprietario del file. Punta KMS_PKCS11_CONFIG
al tuo file di configurazione:
export KMS_PKCS11_CONFIG="/path/to/pkcs11-config.yaml"
Anche in questo caso, puoi rendere permanente questa impostazione aggiungendola a /etc/profile
.
echo 'export KMS_PKCS11_CONFIG="/path/to/pkcs11-config.yaml"' | sudo tee -a /etc/profile
Esecuzione di comandi OpenSSL
Con il motore e la libreria configurati correttamente, ora puoi utilizzare il motore nei comandi OpenSSL.
Quando crei firme asimmetriche, tieni presente che Cloud KMS
sono vincolate a usare un singolo digest. Ad esempio, una CryptoKeyVersion
con l'algoritmo EC_SIGN_P256_SHA256
deve essere sempre utilizzato insieme a
un digest SHA-256. Corrisponde al flag -sha256
in OpenSSL. Le chiavi che richiedono digest SHA-384 o SHA-512 devono essere utilizzate con i flag -sha384
o
-sha512
.
Crea una nuova firma
Se nel keyring configurato è presente una chiave denominata foo
, usa
seguente comando per creare una firma su bar.txt
:
openssl dgst -sha256 -engine pkcs11 -keyform engine -sign pkcs11:object=foo bar.txt
L'output di questo comando è un file binario senza formattazione.
Questo comando presuppone che tu stia utilizzando una chiave che accetta un digest SHA-256, quindi
È stato utilizzato l'argomento -sha256
. L'opzione -sha384
o -sha512
sarebbe
appropriato per le chiavi Cloud HSM che usano questi tipi di digest.
Per una chiave RSA-PSS, ricordati di utilizzare le opzioni -sigopt
descritte in precedenza.
Creare una nuova richiesta di firma del certificato
Puoi anche generare una richiesta di firma del certificato (CSR) per un Cloud HSM chiave di firma. Questo è utile se la tua autorità di certificazione richiede una CSR per generare un nuovo certificato per la firma del codice o per proteggere le sessioni web TLS.
openssl req -new -subj '/CN=test/' -sha256 -engine pkcs11 \
-keyform engine -key pkcs11:object=foo > my-request.csr
Genera un nuovo certificato autofirmato
Per lo sviluppo e i test locali, puoi utilizzare un certificato autofirmato per una chiave di firma Cloud HSM. I certificati autofirmati sono utili anche per la firma dei token SAML.
openssl req -new -x509 -days 3650 -subj '/CN=test/' -sha256 -engine pkcs11 \
-keyform engine -key pkcs11:object=foo > my-request.crt
Risoluzione dei problemi con PKCS #11 Spy
PKCS #11 Spy è uno strumento open source che registra i contenuti delle interazioni tramite un'interfaccia PKCS #11. Lo fa interponendosi tra l'applicazione e la libreria PKCS #11 e registrando tutte le chiamate effettuate. Può essere utili per la risoluzione dei problemi.
Per utilizzare PKCS #11 Spy, devi aver installato il pacchetto opensc
. Il
opensc
pacchetto contiene PKCS #11 Spy. Per assicurarti che opensc
sia installato,
esegui il seguente comando:
sudo apt-get install opensc
Quindi, imposta la variabile di ambiente PKCS11_MODULE_PATH
in modo che punti OpenSSL
La libreria di spionaggio PKCS #11 eseguendo il seguente comando:
export PKCS11_MODULE_PATH=/usr/lib/x86_64-linux-gnu/pkcs11-spy.so
Infine, indica a PKCS #11 Spy la libreria PKCS #11 di Cloud HSM impostando le variabili di ambiente PKCS11SPY
e PKCS11SPY_OUTPUT
. Per impostare questi ambienti
, esegui questi comandi:
export PKCS11SPY="/path/to/libkmsp11.so"
# Optional, stderr will be used for logging if not set
export PKCS11SPY_OUTPUT="/path/to/pkcs11-spy.log"