Sebelum dapat mengimpor kunci ke Cloud KMS, kunci harus digabungkan menggunakan skema PKCS#11
CKM_RSA_AES_KEY_WRAP
, yang mencakup RSA-OAEP
(yang disertakan dalam OpenSSL 1.1 secara default) dan AES Key Wrap dengan Padding (yang tidak termasuk). Mekanisme tersebut tidak disertakan dalam OpenSSL.
Sebaiknya gunakan Google Cloud CLI untuk menggabungkan setiap kunci secara otomatis selama proses impor. Jika Anda harus menggabungkan kunci secara manual karena persyaratan kepatuhan atau peraturan, Anda harus mengompilasi ulang OpenSSL terlebih dahulu guna menambahkan dukungan untuk AES Key Wrap dengan Padding. Setelah mengompilasi ulang OpenSSL, Anda dapat menggabungkan kunci secara manual.
Sebelum memulai
Jangan menimpa biner OpenSSL bawaan sistem Anda dengan
biner yang di-patch yang dihasilkan dengan mengikuti prosedur dalam topik ini. Misalnya,
jangan menginstal OpenSSL yang di-patch langsung ke /usr
. Jika Anda mengikuti
prosedur ini dengan tepat, OpenSSL yang di-patch dibangun di $HOME/build
dan diinstal
ke $HOME/local/bin
.
Jika ${HOME}/local/bin
sudah ada, cadangkan kontennya atau pindahkan file tersebut
ke tempat lain sebelum mengikuti langkah-langkah dalam topik ini.
Mem-patch dan menginstal OpenSSL v1.1.0
Jika Anda memilih menggunakan OpenSSL untuk menggabungkan kunci Anda secara manual sebelum mengimpornya ke Cloud KMS, OpenSSL v1.1.0 diperlukan, dengan patch berikut diterapkan. Anda harus mengompilasi OpenSSL dan menginstalnya ke lokasi yang terpisah dari penginstalan OpenSSL default sistem Anda.
Download sumber untuk rilis OpenSSL 1.1.0l dari https://www.openssl.org/source. Ini adalah rilis terbaru pada baris kode 1.1.0. Jangan gunakan versi OpenSSL yang lebih baru, seperti v1.1.1, dalam prosedur ini. Patch akan gagal diterapkan.
Ekstrak arsip ke
${HOME}/build/openssl/
menggunakan perintah berikut. Perintah ini mengganti direktori default, yang menyertakan versi OpenSSL dan sering berubah. Ganti /path/to/downloaded-openssl.tar.gz dengan jalur ke arsip.tar.gz
yang didownload.# Create the directory for the eventual OpenSSL binaries mkdir -p ${HOME}/local/ssl # Create the build directory mkdir -p ${HOME}/build/openssl # Extract the archive to ${HOME}/build/openssl tar xzvf /path/to/downloaded-openssl.tar.gz \ -C ${HOME}/build/openssl/ \ --strip-components 1
Terapkan patch kustom ke sumber OpenSSL yang diekstrak, menggunakan perintah berikut.Patch ini mengaktifkan flag
EVP_CIPHER_CTX_FLAG_WRAP_ALLOW
.cd ${HOME}/build cat <<-EOF | patch -d . -p0 --- orig/openssl/apps/enc.c 2020-01-17 14:39:54.991708785 -0500 +++ openssl/apps/enc.c 2020-01-17 14:41:33.215704269 -0500 @@ -482,6 +482,7 @@ */ BIO_get_cipher_ctx(benc, &ctx); + EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPHER_CTX_FLAG_WRAP_ALLOW); if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc)) { BIO_printf(bio_err, "Error setting cipher %s\n", EOF
Jalankan perintah berikut untuk mem-build biner dan library OpenSSL dari sumber yang di-patch, menguji build untuk validitasnya, dan menginstal biner dan library ke direktori
${HOME}/local
.CPUS=$(getconf _NPROCESSORS_ONLN) cd ${HOME}/build/openssl ./config --prefix=${HOME}/local --openssldir=${HOME}/local/ssl make -j${CPUS} make test make install
Jangan menghilangkan atau mengubah tanda
--prefix
atau--openssldir
, untuk memastikan Anda tidak menimpa penginstalan OpenSSL sistem.Jalankan perintah berikut untuk memastikan biner OpenSSL yang baru berhasil diinstal:
test -x ${HOME}/local/bin/openssl || echo FAIL
Anda tidak akan melihat output jika biner diinstal dengan benar. Jika Anda melihat
FAIL
, periksa output perintahmake
,make test
, danmake install
yang Anda jalankan sebelumnya.Biner OpenSSL yang di-patch ditautkan secara dinamis ke library OpenSSL di
${HOME}/local/ssl/lib/
, tetapi perintahld
tidak mengindeks library ini secara default. Jalankan perintah berikut untuk membuat skrip wrapper yang menambahkan library yang di-patch ke${LD_LIBRARY_PATH}
sebelum memanggil CLI untuk OpenSSL yang di-patch.cat > ${HOME}/local/bin/openssl.sh <<-EOF #!/bin/bash env LD_LIBRARY_PATH=${HOME}/local/lib/ ${HOME}/local/bin/openssl "\$@" EOF chmod u+x ${HOME}/local/bin/openssl.sh
Periksa apakah versi OpenSSL yang dimulai oleh skrip adalah versi yang baru saja Anda buat dan instal, menggunakan perintah berikut:
${HOME}/local/bin/openssl.sh version
Sekarang Anda dapat memanggil skrip wrapper ${HOME}/local/bin/openssl.sh
untuk menggabungkan kunci untuk diimpor secara manual.