Langkah 2: Buat atau impor kunci pribadi dan sertifikat SSL/TLS - AWS CloudHSM

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Langkah 2: Buat atau impor kunci pribadi dan sertifikat SSL/TLS

Untuk mengaktifkan HTTPS, aplikasi server web Anda (NGINX atau Apache) memerlukan kunci privat dan sertifikat SSL/TLS yang sesuai. Untuk menggunakan server web SSL/TLS offload dengan AWS CloudHSM, Anda harus menyimpan kunci pribadi di HSM di cluster Anda. AWS CloudHSM Anda dapat mencapai ini dengan salah satu cara berikut:

  • Jika Anda belum memiliki kunci pribadi dan sertifikat yang sesuai, buat kunci pribadi di HSM. Anda menggunakan kunci privat untuk membuat permintaan penandatanganan sertifikat (CSR), yang Anda gunakan untuk membuat sertifikat SSL/TLS.

  • Jika Anda sudah memiliki kunci pribadi dan sertifikat yang sesuai, impor kunci pribadi ke HSM.

Terlepas dari metode mana yang Anda pilih sebelumnya, Anda mengekspor kunci pribadi PEM palsu dari HSM, yang merupakan file kunci pribadi dalam format PEM yang berisi referensi ke kunci pribadi yang disimpan di HSM (itu bukan kunci pribadi yang sebenarnya). Server web Anda menggunakan file kunci pribadi PEM palsu untuk mengidentifikasi kunci pribadi pada HSM selama pembongkaran SSL/TLS.

Menghasilkan kunci pribadi dan sertifikat

Menghasilkan kunci pribadi

Bagian ini menunjukkan cara membuat keypair menggunakan Key Management Utility (KMU) dari Client SDK 3. Setelah Anda memiliki key pair yang dihasilkan di dalam HSM, Anda dapat mengekspornya sebagai file PEM palsu, dan menghasilkan sertifikat yang sesuai.

Kunci pribadi yang dihasilkan dengan Key Management Utility (KMU) dapat digunakan dengan Client SDK 3 dan Client SDK 5.

Instal dan konfigurasikan Key Management Utility (KMU)
  1. Hubungkan ke instans klien Anda.

  2. Instal dan Konfigurasikan SDK Klien 3.

  3. Jalankan perintah berikut untuk memulai AWS CloudHSM klien.

    Amazon Linux
    $ sudo start cloudhsm-client
    Amazon Linux 2
    $ sudo service cloudhsm-client start
    CentOS 7
    $ sudo service cloudhsm-client start
    CentOS 8
    $ sudo service cloudhsm-client start
    RHEL 7
    $ sudo service cloudhsm-client start
    RHEL 8
    $ sudo service cloudhsm-client start
    Ubuntu 16.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 18.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 20.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 22.04 LTS

    Support untuk OpenSSL Dynamic Engine belum tersedia.

  4. Jalankan perintah berikut untuk memulai alat baris perintah key_mgmt_util.

    $ /opt/cloudhsm/bin/key_mgmt_util
  5. Jalankan perintah berikut untuk masuk ke HSM. Ganti <nama pengguna> dan <kata sandi> dengan nama pengguna dan kata sandi pengguna kriptografi (CU).

    Command: loginHSM -u CU -s <user name> -p <password>>

Menghasilkan Kunci Pribadi

Tergantung pada kasus penggunaan Anda, Anda dapat menghasilkan RSA atau EC key pair. Lakukan salah satu hal berikut ini:

  • Untuk menghasilkan kunci pribadi RSA pada HSM

    Gunakan genRSAKeyPair perintah untuk menghasilkan key pair RSA. Contoh ini menghasilkan key pair RSA dengan modulus 2048, eksponen publik 65537, dan label tls_rsa_keypair.

    Command: genRSAKeyPair -m 2048 -e 65537 -l tls_rsa_keypair

    Jika perintah berhasil, Anda akan melihat output berikut yang menunjukkan bahwa Anda telah berhasil menghasilkan key pair RSA.

    Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 7 private key handle: 8 Cluster Status: Node id 1 status: 0x00000000 : HSM Return: SUCCESS
  • Untuk menghasilkan kunci pribadi EC pada HSM

    Gunakan genECCKeyPair perintah untuk menghasilkan EC key pair. Contoh ini menghasilkan key pair EC dengan ID kurva 2 (sesuai dengan NID_X9_62_prime256v1 kurva) dan label tls_ec_keypair.

    Command: genECCKeyPair -i 2 -l tls_ec_keypair

    Jika perintah berhasil, Anda akan melihat output berikut yang menunjukkan bahwa Anda telah berhasil menghasilkan EC key pair.

    Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 7 private key handle: 8 Cluster Status: Node id 1 status: 0x00000000 : HSM Return: SUCCESS

Ekspor file kunci pribadi PEM palsu

Setelah Anda memiliki kunci pribadi di HSM, Anda harus mengekspor file kunci pribadi PEM palsu. File ini tidak berisi data kunci yang sebenarnya, tetapi memungkinkan OpenSSL Dynamic Engine untuk mengidentifikasi kunci pribadi pada HSM. Anda kemudian dapat menggunakan kunci pribadi untuk membuat permintaan penandatanganan sertifikat (CSR) dan menandatangani CSR untuk membuat sertifikat.

catatan

File PEM palsu yang dihasilkan dengan Key Management Utility (KMU) dapat digunakan dengan Client SDK 3 dan Client SDK 5.

Identifikasi pegangan kunci yang sesuai dengan kunci yang ingin Anda ekspor sebagai PEM palsu, lalu jalankan perintah berikut untuk mengekspor kunci pribadi dalam format PEM palsu dan menyimpannya ke file. Ganti nilai berikut dengan nilai Anda sendiri:

  • <private_key_handle>— Pegangan kunci pribadi yang dihasilkan. Pegangan ini dihasilkan oleh salah satu perintah pembuatan kunci pada langkah sebelumnya. Dalam contoh sebelumnya, handel kunci privat adalah 8.

  • <web_server_fake_PEM.key>— Nama file tempat kunci PEM palsu Anda akan ditulis.

Command: getCaviumPrivKey -k <private_key_handle> -out <web_server_fake_PEM.key>

Keluar

Jalankan perintah berikut untuk menghentikan key_mgmt_util.

Command: exit

Anda sekarang harus memiliki file baru di sistem Anda, yang terletak di jalur yang ditentukan oleh <web_server_fake_PEM.key>dalam perintah sebelumnya. File ini adalah file kunci pribadi PEM palsu.

Menghasilkan sertifikat yang ditandatangani sendiri

Setelah Anda membuat kunci pribadi PEM palsu, Anda dapat menggunakan file ini untuk menghasilkan permintaan penandatanganan sertifikat (CSR) dan sertifikat.

Di lingkungan produksi, Anda biasanya menggunakan sertifikat otoritas (CA) untuk membuat sertifikat dari CSR. CA tidak diperlukan untuk lingkungan pengujian. Jika Anda menggunakan CA, kirim file CSR kepada mereka dan gunakan sertifikat SSL/TLS yang ditandatangani yang mereka berikan kepada Anda di server web Anda untuk HTTPS.

Sebagai alternatif untuk menggunakan CA, Anda dapat menggunakan AWS CloudHSM OpenSSL Dynamic Engine untuk membuat sertifikat yang ditandatangani sendiri. Sertifikat yang ditandatangani sendiri tidak dipercaya oleh peramban dan tidak boleh digunakan dalam lingkungan produksi. Sertifikat dapat digunakan dalam lingkungan pengujian.

Awas

Sertifikat yang ditandatangani sendiri hanya boleh digunakan dalam lingkungan pengujian. Untuk lingkungan produksi, gunakan metode yang lebih aman seperti otoritas sertifikat untuk membuat sertifikat.

Instal dan konfigurasikan OpenSSL Dynamic Engine
  1. Hubungkan ke instans klien Anda.

  2. Untuk menginstal dan mengkonfigurasi, lakukan salah satu hal berikut:

Menghasilkan sertifikat
  1. Dapatkan salinan file PEM palsu Anda yang dihasilkan pada langkah sebelumnya.

  2. Buat CSR

    Jalankan perintah berikut untuk menggunakan AWS CloudHSM OpenSSL Dynamic Engine untuk membuat permintaan penandatanganan sertifikat (CSR). Ganti<web_server_fake_PEM.key> dengan nama file yang berisi kunci privat PEM Anda yang palsu. Ganti <web_server.csr> dengan nama file yang berisi CSR Anda.

    Perintah req bersifat interaktif. Tanggapi setiap bidang. Informasi bidang disalin ke sertifikat SSL/TLS Anda.

    $ openssl req -engine cloudhsm -new -key <web_server_fake_PEM.key> -out <web_server.csr>
  3. Buat sertifikat yang ditandatangani sendiri

    Jalankan perintah berikut untuk menggunakan AWS CloudHSM OpenSSL Dynamic Engine untuk menandatangani CSR Anda dengan kunci pribadi Anda di HSM Anda. Ini membuat sertifikat yang ditandatangani sendiri. Ganti nilai berikut dalam perintah dengan nilai Anda sendiri.

    • <web_server.csr> — Nama file yang berisi CSR.

    • <web_server_fake_PEM.key> — Nama file yang berisi kunci privat PEM palsu.

    • <web_server.crt> — Nama file yang akan berisi sertifikat server web Anda.

    $ openssl x509 -engine cloudhsm -req -days 365 -in <web_server.csr> -signkey <web_server_fake_PEM.key> -out <web_server.crt>

Setelah Anda menyelesaikan langkah ini, buka Langkah 3: Konfigurasikan server web.

Impor kunci pribadi dan sertifikat yang ada

Anda mungkin sudah memiliki kunci privat dan sertifikat SSL/TLS yang sesuai yang Anda gunakan untuk HTTPS di server web Anda. Jika demikian, Anda dapat mengimpor kunci itu ke HSM dengan mengikuti langkah-langkah dalam bagian ini.

catatan

Beberapa catatan tentang impor kunci privat dan kompatibilitas Klien SDK:

  • Mengimpor kunci privat yang ada memerlukan Klien SDK 3.

  • Anda dapat menggunakan kunci privat dari Klien SDK 3 dengan Klien SDK 5.

  • Mesin Dinamis OpenSSL untuk Klien SDK 3 tidak mendukung platform Linux terbaru, tetapi implementasi Mesin Dinamis OpenSSL untuk Klient SDK 5 mendukung. Anda dapat mengimpor kunci pribadi yang ada menggunakan Key Management Utility (KMU) yang disediakan dengan Client SDK 3, lalu gunakan kunci pribadi tersebut dan implementasi OpenSSL Dynamic Engine dengan Client SDK 5 untuk mendukung pembongkaran SSL/TLS pada platform Linux terbaru.

Untuk mengimpor kunci privat yang ada ke HSM dengan klien SDK 3
  1. Hubungkan ke instans klien Amazon EC2 Anda. Jika perlu, salin kunci privat dan sertifikat yang ada ke instans.

  2. Instal dan Konfigurasikan SDK Klien 3

  3. Jalankan perintah berikut untuk memulai AWS CloudHSM klien.

    Amazon Linux
    $ sudo start cloudhsm-client
    Amazon Linux 2
    $ sudo service cloudhsm-client start
    CentOS 7
    $ sudo service cloudhsm-client start
    CentOS 8
    $ sudo service cloudhsm-client start
    RHEL 7
    $ sudo service cloudhsm-client start
    RHEL 8
    $ sudo service cloudhsm-client start
    Ubuntu 16.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 18.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 20.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 22.04 LTS

    Support untuk OpenSSL Dynamic Engine belum tersedia.

  4. Jalankan perintah berikut untuk memulai alat baris perintah key_mgmt_util.

    $ /opt/cloudhsm/bin/key_mgmt_util
  5. Jalankan perintah berikut untuk masuk ke HSM. Ganti <nama pengguna> dan <kata sandi> dengan nama pengguna dan kata sandi pengguna kriptografi (CU).

    Command: loginHSM -u CU -s <user name> -p <password>
  6. Jalankan perintah berikut untuk mengimpor kunci privat Anda ke HSM.

    1. Jalankan perintah berikut untuk membuat kunci pembungkus simetris yang berlaku untuk sesi saat ini saja. Perintah dan output ditampilkan.

      Command: genSymKey -t 31 -s 16 -sess -l wrapping_key_for_import Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 6 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
    2. Jalankan perintah berikut untuk mengimpor kunci privat yang ada ke HSM. Perintah dan output ditampilkan. Ganti nilai berikut dengan nilai Anda sendiri:

      • <web_server_existing.key> — Nama file yang berisi kunci privat Anda.

      • <web_server_imported_key> — Label untuk kunci privat yang diimpor.

      • <wrapping_key_handle> — Membungkus handel kunci yang dihasilkan oleh perintah sebelumnya. Pada contoh sebelumnya, handel kunci pembungkus adalah 6.

      Command: importPrivateKey -f <web_server_existing.key> -l <web_server_imported_key> -w <wrapping_key_handle> BER encoded key length is 1219 Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS Private Key Unwrapped. Key Handle: 8 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
  7. Jalankan perintah berikut untuk mengekspor kunci privat dalam format PEM palsu dan menyimpannya ke file. Ganti nilai berikut dengan nilai Anda sendiri:

    • <private_key_handle> — Menangani kunci privat yang diimpor. Handel ini dihasilkan oleh perintah kedua di langkah sebelumnya. Dalam contoh sebelumnya, handel kunci privat adalah 8.

    • <web_server_fake_PEM.key> — Nama file yang berisi kunci privat PEM palsu yang diekspor.

    Command: getCaviumPrivKey -k <private_key_handle> -out <web_server_fake_PEM.key>
  8. Gunakan perintah untuk menghentikan key_mgmt_util.

    Command: exit

Setelah Anda menyelesaikan langkah ini, buka Langkah 3: Konfigurasikan server web.