Panduan ini berisi petunjuk menyiapkan OpenSSL untuk menggunakan kunci Cloud HSM di Debian 11 (Bullseye). Petunjuk ini umumnya berlaku meskipun Anda menggunakan OS atau lingkungan lain, tetapi perlu diketahui bahwa mungkin ada sedikit perbedaan.
Persyaratan
Download rilis library untuk memulai. Untuk detail tambahan tentang library PKCS #11, lihat panduan pengguna.
Sebelum memulai, instal paket libengine-pkcs11-openssl
.
sudo apt-get update
sudo apt-get install libengine-pkcs11-openssl
Konfigurasi
Menetapkan variabel lingkungan PKCS11_MODULE_PATH.
Agar openssl
dapat menggunakan library PKCS #11 kami, tetapkan variabel lingkungan PKCS11_MODULE_PATH
:
export PKCS11_MODULE_PATH="/path/to/libkmsp11.so"
Untuk menetapkan variabel lingkungan secara permanen, tambahkan
export PKCS11_MODULE_PATH="/path/to/libkmsp11.so"
ke /etc/profile
dengan menjalankan perintah berikut:
echo 'export PKCS11_MODULE_PATH="/path/to/libkmsp11.so"' | sudo tee -a /etc/profile
Konfigurasi library PKCS #11
Library PKCS #11 memerlukan file konfigurasi YAML untuk menemukan resource Cloud KMS. YAML setidaknya harus mengonfigurasi satu token PKCS #11.
Jika Anda menggunakan OpenSSL dengan proses lain yang mungkin melakukan fork (misalnya, Apache atau Nginx), Anda juga harus memastikan kolom refresh_interval_secs
tidak disetel, atau disetel ke 0.
Contoh file konfigurasi:
---
tokens:
- key_ring: "projects/my-project/locations/us-central1/keyRings/my-keyring"
Dengan konfigurasi ini, semua kunci penandatanganan dan dekripsi asimetris di
my-keyring
akan tersedia di library.
Anda harus menetapkan izin pada file konfigurasi sehingga file hanya dapat ditulis
oleh pemilik file. Arahkan KMS_PKCS11_CONFIG
ke file konfigurasi Anda:
export KMS_PKCS11_CONFIG="/path/to/pkcs11-config.yaml"
Sekali lagi, Anda dapat membuat setelan ini permanen dengan menambahkannya ke /etc/profile
.
echo 'export KMS_PKCS11_CONFIG="/path/to/pkcs11-config.yaml"' | sudo tee -a /etc/profile
Menjalankan perintah OpenSSL
Dengan mesin dan library yang dikonfigurasi dengan benar, Anda kini dapat menggunakan mesin tersebut dalam perintah OpenSSL.
Saat membuat tanda tangan asimetris, perhatikan bahwa kunci Cloud KMS dibatasi untuk menggunakan satu ringkasan. Sebagai contoh, BigtableVersion dengan algoritma EC_SIGN_P256_SHA256
harus selalu digunakan bersama dengan ringkasan SHA-256. Hal ini sesuai dengan flag -sha256
di OpenSSL. Kunci
yang memerlukan ringkasan SHA-384 atau SHA-512 harus digunakan dengan flag -sha384
atau
-sha512
.
Buat tanda tangan baru
Dengan asumsi ada kunci bernama foo
dalam key ring yang dikonfigurasi, gunakan perintah berikut untuk membuat tanda tangan melalui bar.txt
:
openssl dgst -sha256 -engine pkcs11 -keyform engine -sign pkcs11:object=foo bar.txt
Output perintah ini adalah biner yang tidak diformat.
Perintah tersebut mengasumsikan bahwa Anda menggunakan kunci yang menggunakan digest SHA-256 sehingga argumen -sha256
digunakan. Opsi -sha384
atau -sha512
akan sesuai untuk kunci Cloud HSM yang menggunakan jenis ringkasan tersebut.
Untuk kunci RSA-PSS, jangan lupa menggunakan opsi -sigopt
yang telah dibahas sebelumnya.
Membuat permintaan penandatanganan sertifikat baru
Anda juga dapat membuat permintaan penandatanganan sertifikat (CSR) untuk kunci penandatanganan Cloud HSM. Hal ini berguna jika certificate authority Anda memerlukan CSR agar dapat membuat sertifikat baru untuk penandatanganan kode, atau untuk melindungi sesi web TLS.
openssl req -new -subj '/CN=test/' -sha256 -engine pkcs11 \
-keyform engine -key pkcs11:object=foo > my-request.csr
Membuat sertifikat baru yang ditandatangani sendiri
Untuk pengembangan dan pengujian lokal, Anda dapat menggunakan sertifikat yang ditandatangani sendiri untuk kunci penandatanganan Cloud HSM. Sertifikat yang ditandatangani sendiri juga berguna untuk penandatanganan token SAML.
openssl req -new -x509 -days 3650 -subj '/CN=test/' -sha256 -engine pkcs11 \
-keyform engine -key pkcs11:object=foo > my-request.crt
Memecahkan masalah dengan Spy PKCS #11
PKCS #11 Spy adalah alat open source yang mencatat konten interaksi melalui antarmuka PKCS #11. Hal ini dilakukan dengan berada di antara aplikasi dan library PKCS #11, serta mencatat semua panggilan yang dilakukan ke dalam log. Hal ini dapat membantu untuk pemecahan masalah.
Untuk menggunakan Spy PKCS #11, Anda harus menginstal paket opensc
. Paket
opensc
berisi Spy PKCS #11. Untuk memastikan bahwa opensc
sudah terinstal,
jalankan perintah berikut:
sudo apt-get install opensc
Kemudian, tetapkan variabel lingkungan PKCS11_MODULE_PATH
untuk mengarahkan OpenSSL ke library Spy PKCS #11 dengan menjalankan perintah berikut:
export PKCS11_MODULE_PATH=/usr/lib/x86_64-linux-gnu/pkcs11-spy.so
Terakhir, arahkan PKCS #11 Spy ke library Cloud HSM PKCS #11 dengan menetapkan variabel lingkungan PKCS11SPY
dan PKCS11SPY_OUTPUT
. Untuk menetapkan variabel lingkungan ini, jalankan perintah berikut:
export PKCS11SPY="/path/to/libkmsp11.so"
# Optional, stderr will be used for logging if not set
export PKCS11SPY_OUTPUT="/path/to/pkcs11-spy.log"