Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS CloudHSM SSL/TLS bongkar muat di Linux menggunakan NGINX atau HAProxy dengan Penyedia OpenSSL
Topik ini memberikan petunjuk langkah demi langkah untuk mengatur off SSL/TLS load identitas server dengan AWS CloudHSM pada server web Linux menggunakan NGINX atau HAProxy dengan Penyedia OpenSSL.
Topik
Gambaran umum
Di Linux, perangkat lunak server web NGINX
Untuk menyelesaikan tutorial ini, Anda akan mengkonfigurasi NGINX atau HAProxy untuk menggunakan Penyedia OpenSSL. AWS CloudHSM Tutorial ini menunjukkan cara melakukan hal berikut:
-
Instal perangkat lunak server web pada instans Amazon EC2.
-
Atur konfigurasi perangkat lunak server web untuk mendukung HTTPS dengan kunci privat yang tersimpan di klaster AWS CloudHSM .
-
(Opsional) Gunakan Amazon EC2 untuk membuat instans server web kedua dan Elastic Load Balancing untuk membuat penyeimbang beban. Menggunakan penyeimbang beban dapat meningkatkan performa dengan mendistribusikan beban di beberapa server. Hal ini juga dapat memberikan redundansi dan ketersediaan yang lebih tinggi jika satu atau lebih server gagal.
Saat Anda siap memulai, buka Langkah 1: Siapkan prasyarat.
Langkah 1: Siapkan prasyarat
Platform yang berbeda memerlukan prasyarat yang berbeda. Gunakan bagian prasyarat di bawah ini yang sesuai dengan platform Anda.
Prasyarat untuk AWS CloudHSM Penyedia OpenSSL
Untuk mengatur offload identitas SSL/TLS server web dengan Penyedia AWS CloudHSM OpenSSL untuk Client SDK 5, Anda memerlukan yang berikut ini:
-
AWS CloudHSM Cluster aktif dengan setidaknya dua modul keamanan perangkat keras (HSM)
catatan
Anda dapat menggunakan satu HSM klaster, tetapi Anda harus terlebih dahulu menonaktifkan daya tahan kunci klien. Untuk informasi selengkapnya, lihat Kelola Pengaturan Daya Tahan Kunci Klien dan Alat Konfigurasi Klien SDK 5.
-
Instans Amazon EC2 menjalankan sistem operasi Linux dengan perangkat lunak berikut diinstal:
-
Server web (baik NGINX atau HAProxy)
-
Penye AWS CloudHSM dia OpenSSL untuk SDK Klien 5
-
-
Pengguna kripto (CU) harus memiliki dan mengelola kunci privat server web pada HSM.
Untuk mengatur sebuah instans server web Linux dan membuat CU pada HSM
catatan
Banyak perintah dalam prosedur ini memerlukan hak istimewa yang lebih tinggi. Anda mungkin perlu menjalankan perintah dengan sudo atau sebagai pengguna root tergantung pada konfigurasi sistem Anda.
-
Instal dan konfigurasikan Penye AWS CloudHSM dia OpenSSL untuk Client SDK 5. Untuk informasi selengkapnya tentang menginstal Penyedia OpenSSL, lihat Penyedia AWS CloudHSM OpenSSL untuk Klien SDK 5.
-
Pada instance EC2 Linux yang memiliki akses ke cluster Anda, instal server web NGINX atau HAProxy:
-
Gunakan CloudHSM CLI untuk membuat pengguna kripto. Pengguna kripto (CU) Untuk informasi selengkapnya tentang mengelola pengguna HSM, lihat M engelola pengguna HSM dengan CloudHSM CLI.
Tip
Lacak nama pengguna dan kata sandi CU. Anda akan membutuhkannya nanti ketika Anda membuat atau mengimpor kunci privat HTTPS dan sertifikat untuk server web Anda.
Setelah Anda menyelesaikan langkah ini, buka Langkah 2: Hasilkan atau impor kunci pribadi dan dapatkan sertifikat.
Catatan
-
Untuk menggunakan Security-Enhanced Linux (SELinux) dan server web, Anda harus mengizinkan koneksi TCP keluar pada port 2223, yang merupakan port yang digunakan Client SDK 5 untuk berkomunikasi dengan HSM.
-
Untuk membuat dan mengaktifkan klaster dan memberikan akses instans EC2 ke klaster, selesaikan langkah-langkah dalam Memulai dengan AWS CloudHSM. Cara memulai menawarkan instruksi langkah demi langkah untuk membuat cluster aktif dengan satu HSM dan instans klien Amazon EC2. Anda dapat menggunakan instans klien ini sebagai server web Anda.
-
Untuk menghindari menonaktifkan daya tahan kunci klien, tambahkan lebih dari satu HSM ke klaster Anda. Untuk informasi lebih lanjut, lihat Menambahkan HSM ke AWS CloudHSM klaster.
-
Untuk terhubung ke instans klien Anda, Anda dapat menggunakan SSH atau PuTTY. Untuk informasi selengkapnya, lihat.Menghubungkan ke Instans Linux Anda Menggunakan SSH atau Menyambung ke Instans Linux Anda dari Windows Menggunakan PuTTY dalam dokumentasi Amazon EC2.
Langkah 2: Hasilkan atau impor kunci pribadi dan dapatkan sertifikat
Untuk mengaktifkan HTTPS, aplikasi server web Anda (NGINX atau HAProxy) memerlukan kunci pribadi dan sertifikat yang sesuai. SSL/TLS Untuk menggunakan offload identitas SSL/TLS server server web dengan AWS CloudHSM, Anda harus menyimpan kunci pribadi di HSM di cluster Anda AWS CloudHSM . Pertama-tama Anda akan menghasilkan kunci pribadi dan menggunakan kunci tersebut untuk membuat permintaan penandatanganan sertifikat (CSR). Anda kemudian 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 (ini bukan kunci pribadi yang sebenarnya). Server web Anda menggunakan file kunci pribadi PEM palsu untuk mengidentifikasi kunci pribadi pada HSM selama pembongkaran identitas SSL/TLS server.
Menghasilkan kunci pribadi
Bagian ini menunjukkan cara menghasilkan keypair menggunakan CloudHSM CLI. Setelah Anda memiliki pasangan kunci yang dihasilkan di dalam HSM, Anda dapat mengekspornya sebagai file PEM palsu dan menghasilkan sertifikat yang sesuai.
Instal dan konfigurasikan CloudHSM CLI
-
Instal dan Konfigur asikan CloudHSM CLI.
-
Gunakan perintah berikut untuk memulai CloudHSM CLI.
$/opt/cloudhsm/bin/cloudhsm-cli interactive -
Jalankan perintah berikut untuk masuk ke HSM. Ganti
<user name>dengan nama pengguna pengguna kripto-pengguna Andaaws-cloudhsm>login --username<user name>--role crypto-user
Menghasilkan Kunci Pribadi
Tergantung pada kasus penggunaan Anda, Anda dapat menghasilkan pasangan kunci RSA atau EC. Anda juga dapat menghasilkan Ed25519 atau pasangan ML-DSA kunci untuk digunakan dengan TLS 1.3. Lakukan salah satu tindakan berikut:
-
Untuk menghasilkan kunci pribadi RSA pada HSM
Gunakan key generate-asymmetric-pair rsa perintah untuk menghasilkan pasangan kunci RSA. Contoh ini menghasilkan pasangan kunci RSA dengan modulus 2048, eksponen publik 65537, label kunci publik
tls_rsa_pub, dan label kunci pribadi dari.tls_rsa_privateaws-cloudhsm >key generate-asymmetric-pair rsa \ --public-exponent 65537 \ --modulus-size-bits 2048 \ --public-label tls_rsa_pub \ --private-label tls_rsa_private \ --private-attributes sign=true{ "error_code": 0, "data": { "public_key": { "key-reference": "0x0000000000280cc8", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "full" }, "attributes": { "key-type": "rsa", "label": "tls_rsa_pub", "id": "", "check-value": "0x01fe6e", "class": "public-key", "encrypt": true, "decrypt": false, "token": true, "always-sensitive": false, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": false, "sign": false, "trusted": false, "unwrap": false, "verify": false, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 512, "public-exponent": "0x010001", "modulus": "0xb1d27e857a876f4e9fd5de748a763c539b359f937eb4b4260e30d1435485a732c878cdad9c72538e2215351b1d41358c9bf80b599c73a80fdb457aa7b20cd61e486c326e2cfd5e124a7f6a996437437812b542e3caf85928aa866f0298580f7967ee6aa01440297d7308fdd9b76b70d1b67f12634df6e6296d6c116d5744c6d60d14d3bf3cb978fe6b75ac67b7089bafd50d8687213b31abc7dc1bad422780d29c851d5102b56f932551eaf52a9591fd8c43d81ecc133022653225bd129f8491101725e9ea33e1ded83fb57af35f847e532eb30cd7e726f23910d2671c6364092e834697ec3cef72cc23615a1ba7c5e100156ae0acac3160f0ca9725d38318b7", "modulus-size-bits": 2048 } }, "private_key": { "key-reference": "0x0000000000280cc7", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "full" }, "attributes": { "key-type": "rsa", "label": "tls_rsa_private", "id": "", "check-value": "0x01fe6e", "class": "private-key", "encrypt": false, "decrypt": true, "token": true, "always-sensitive": true, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": true, "sign": true, "trusted": false, "unwrap": false, "verify": false, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 1217, "public-exponent": "0x010001", "modulus": "0xb1d27e857a876f4e9fd5de748a763c539b359f937eb4b4260e30d1435485a732c878cdad9c72538e2215351b1d41358c9bf80b599c73a80fdb457aa7b20cd61e486c326e2cfd5e124a7f6a996437437812b542e3caf85928aa866f0298580f7967ee6aa01440297d7308fdd9b76b70d1b67f12634df6e6296d6c116d5744c6d60d14d3bf3cb978fe6b75ac67b7089bafd50d8687213b31abc7dc1bad422780d29c851d5102b56f932551eaf52a9591fd8c43d81ecc133022653225bd129f8491101725e9ea33e1ded83fb57af35f847e532eb30cd7e726f23910d2671c6364092e834697ec3cef72cc23615a1ba7c5e100156ae0acac3160f0ca9725d38318b7", "modulus-size-bits": 2048 } } } } -
Untuk menghasilkan kunci pribadi EC pada HSM
Gunakan key generate-asymmetric-pair ec perintah untuk menghasilkan pasangan kunci EC. Contoh ini menghasilkan pasangan kunci EC dengan
prime256v1kurva (sesuai denganNID_X9_62_prime256v1kurva), label kunci publiktls_ec_pub, dan label kunci pribadi daritls_ec_private.aws-cloudhsm >key generate-asymmetric-pair ec \ --curve prime256v1 \ --public-label tls_ec_pub \ --private-label tls_ec_private \ --private-attributes sign=true{ "error_code": 0, "data": { "public_key": { "key-reference": "0x000000000012000b", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "session" }, "attributes": { "key-type": "ec", "label": "tls_ec_pub", "id": "", "check-value": "0xd7c1a7", "class": "public-key", "encrypt": false, "decrypt": false, "token": false, "always-sensitive": false, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": false, "sign": false, "trusted": false, "unwrap": false, "verify": false, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 57, "ec-point": "0x047096513df542250a6b228fd9cb67fd0c903abc93488467681974d6f371083fce1d79da8ad1e9ede745fb9f38ac8622a1b3ebe9270556000c", "curve": "secp224r1" } }, "private_key": { "key-reference": "0x000000000012000c", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "session" }, "attributes": { "key-type": "ec", "label": "tls_ec_private", "id": "", "check-value": "0xd7c1a7", "class": "private-key", "encrypt": false, "decrypt": false, "token": false, "always-sensitive": true, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": true, "sign": true, "trusted": false, "unwrap": false, "verify": false, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 122, "ec-point": "0x047096513df542250a6b228fd9cb67fd0c903abc93488467681974d6f371083fce1d79da8ad1e9ede745fb9f38ac8622a1b3ebe9270556000c", "curve": "secp224r1" } } } } -
Untuk menghasilkan kunci pribadi Ed25519 pada HSM
Ketersediaan Ed25519
Ed25519 hanya tersedia di cluster non-FIPS. Ed25519 hanya mendukung TLS 1.3.
Gunakan key generate-asymmetric-pair ec perintah untuk menghasilkan pasangan kunci Ed25519. Contoh ini menghasilkan pasangan kunci Ed25519 dengan label kunci publik
tls_ed25519_pubdan label kunci pribadi.tls_ed25519_privateaws-cloudhsm >key generate-asymmetric-pair ec \ --curve ed25519 \ --public-label tls_ed25519_pub \ --private-label tls_ed25519_private \ --private-attributes sign=true \ --public-attributes verify=true{ "error_code": 0, "data": { "public_key": { "key-reference": "0x0000000000383931", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "key-quorum-values": { "manage-key-quorum-value": 0, "use-key-quorum-value": 0 }, "cluster-coverage": "full" }, "attributes": { "key-type": "ec", "label": "tls_ed25519_pub", "id": "0x", "check-value": "0x4cb1b1", "class": "public-key", "encrypt": false, "decrypt": false, "token": true, "always-sensitive": false, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": false, "sign": false, "trusted": false, "unwrap": false, "verify": true, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 32, "ec-point": "0x302a300506032b6570032100c31f8a3695f571dda1658bc98e0591ab088c1a657b3199dd50c3956046ebbe75", "curve": "ed25519" } }, "private_key": { "key-reference": "0x0000000000382e60", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "key-quorum-values": { "manage-key-quorum-value": 0, "use-key-quorum-value": 0 }, "cluster-coverage": "full" }, "attributes": { "key-type": "ec", "label": "tls_ed25519_private", "id": "0x", "check-value": "0x4cb1b1", "class": "private-key", "encrypt": false, "decrypt": false, "token": true, "always-sensitive": true, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": true, "sign": true, "trusted": false, "unwrap": false, "verify": false, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 48, "ec-point": "0x302a300506032b6570032100c31f8a3695f571dda1658bc98e0591ab088c1a657b3199dd50c3956046ebbe75", "curve": "ed25519" } } } } -
Untuk menghasilkan kunci ML-DSA pribadi pada HSM
ML-DSA ketersediaan dan persyaratan
ML-DSA hanya tersedia pada cluster non-FIPS dan memerlukan OpenSSL 3.5 atau yang lebih baru untuk pembuatan CSR, pembuatan sertifikat, dan pemindahan TLS. ML-DSA mendukung TLS 1.3 saja.
Untuk off ML-DSA load TLS di platform Amazon Linux 2023 dan RHEL, Anda mungkin perlu mengaktifkan sub-kebijakan kripto pasca-kuantum (PQ). Untuk informasi selengkapnya, lihat Masalah: J ML-DSA abat tangan TLS gagal di Amazon Linux 2023 dan RHEL dengan “tidak ada algoritma tanda tangan bersama”.
Gunakan
key generate-asymmetric-pair ml-dsaperintah untuk menghasilkan pasangan ML-DSA kunci. Contoh ini menghasilkan pasangan ML-DSA-44 kunci dengan label kunci publiktls_mldsa44_pubdan label kunci pribadi daritls_mldsa44_private. Anda juga dapat menggunakanML-DSA-65atauML-DSA-87untuk tingkat keamanan yang lebih tinggi.aws-cloudhsm >key generate-asymmetric-pair ml-dsa \ --mldsa-algorithm ML-DSA-44 \ --public-label tls_mldsa44_pub \ --private-label tls_mldsa44_private \ --private-attributes sign=true \ --public-attributes verify=true{ "error_code": 0, "data": { "public_key": { "key-reference": "0x0000000000280cd2", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "full" }, "attributes": { "key-type": "ml-dsa", "label": "tls_mldsa44_pub", "id": "", "check-value": "0xd4e5f6", "class": "public-key", "encrypt": false, "decrypt": false, "token": true, "always-sensitive": false, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": false, "sign": false, "trusted": false, "unwrap": false, "verify": true, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 1312, "mldsa-algorithm": "ML-DSA-44" } }, "private_key": { "key-reference": "0x0000000000280cd3", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "full" }, "attributes": { "key-type": "ml-dsa", "label": "tls_mldsa44_private", "id": "", "check-value": "0xd4e5f6", "class": "private-key", "encrypt": false, "decrypt": false, "token": true, "always-sensitive": true, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": true, "sign": true, "trusted": false, "unwrap": false, "verify": false, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 2560, "mldsa-algorithm": "ML-DSA-44" } } } }
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 aktual, tetapi memungkinkan Penyedia OpenSSL untuk mengidentifikasi kunci pribadi pada HSM. Anda kemudian dapat menggunakan kunci pribadi untuk membuat permintaan penandatanganan sertifikat (CSR) dan menandatangani CSR untuk membuat sertifikat.
Gunakan key generate-file perintah untuk mengekspor kunci pribadi dalam format PEM palsu dan menyimpannya ke file. Ganti nilai berikut dengan nilai Anda sendiri:
-
<private_key_label>— Label kunci pribadi yang Anda buat pada langkah sebelumnya. -
<web_server_fake_pem.key>— Nama file tempat kunci PEM palsu Anda akan ditulis.
Untuk kunci RSA dan EC
Gunakan peng reference-pem kodean:
aws-cloudhsm >key generate-file --encoding reference-pem --path<web_server_fake_pem.key>--filter attr.label=<private_key_label>{ "error_code": 0, "data": { "message": "Successfully generated key file" } }
Untuk Ed25519 dan kunci ML-DSA
Gunakan peng cloudhsm-reference-pem kodean:
aws-cloudhsm >key generate-file --encoding cloudhsm-reference-pem --path<web_server_fake_pem.key>--filter attr.label=<private_key_label>{ "error_code": 0, "data": { "message": "Successfully generated key file" } }
Keluar dari CloudHSM CLI
Jalankan perintah berikut untuk menghentikan CloudHSM CLI.
aws-cloudhsm >quit
Anda sekarang harus memiliki file baru di sistem Anda, terletak di jalur yang ditentukan oleh <web_server_fake_pem.key> dalam perintah sebelumnya. File ini adalah file kunci pribadi PEM palsu.
Buat 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 SSL/TLS sertifikat yang ditandatangani yang mereka berikan kepada Anda di server web Anda untuk HTTPS.
Sebagai alternatif untuk menggunakan CA, Anda dapat menggunakan Penyedia AWS CloudHSM OpenSSL untuk membuat sertifikat yang ditandatangani sendiri. Self-signed sertifikat tidak dipercaya oleh browser dan tidak boleh digunakan di lingkungan produksi. Sertifikat dapat digunakan dalam lingkungan pengujian.
Awas
Self-signed sertifikat harus digunakan di lingkungan pengujian saja. Untuk lingkungan produksi, gunakan metode yang lebih aman seperti otoritas sertifikat untuk membuat sertifikat.
Instal dan konfigurasikan Penyedia OpenSSL
-
Hubungkan ke instans klien Anda.
Menghasilkan sertifikat
-
Dapatkan salinan file PEM palsu Anda yang dihasilkan pada langkah sebelumnya.
-
Buat CSR
Jalankan perintah berikut untuk menggunakan Penyedia AWS CloudHSM OpenSSL untuk membuat permintaan penandatanganan sertifikat (CSR). Ganti
<web_server_fake_pem.key>dengan nama file yang berisi kunci pribadi PEM palsu Anda. Ganti<web_server.csr>dengan nama file yang berisi CSR Anda.Perintah
reqbersifat interaktif. Tanggapi setiap bidang. Informasi bidang disalin ke SSL/TLS sertifikat Anda.ML-DSA Persyaratan versi OpenSSL
ML-DSA membutuhkan OpenSSL 3.5 atau yang lebih baru. Pada platform dengan sistem OpenSSL yang lebih lama, Anda harus menggunakan biner OpenSSL 3.5+ yang dibuat khusus.
Algoritma Digest diperlukan untuk kunci RSA dan EC
Untuk kunci RSA dan EC, Anda harus menentukan algoritma ringkasan (misalnya,
-sha256). Ed25519 dan tidak ML-DSA memerlukan flag intisari.$openssl req -provider cloudhsm -provider default -new -sha256 -key<web_server_fake_pem.key>-out<web_server.csr> -
Buat sertifikat yang ditandatangani sendiri
Jalankan perintah berikut untuk menggunakan Penyedia AWS CloudHSM OpenSSL 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 pribadi PEM palsu. -
<web_server.crt>— Nama file yang akan berisi sertifikat server web Anda.
$openssl x509 -provider cloudhsm -provider default -req -sha256 -days 365 -in<web_server.csr>-signkey<web_server_fake_pem.key>-out<web_server.crt> -
Setelah Anda memiliki kunci pribadi dan sertifikat, bukaLangkah 3: Konfigurasikan server web.
Langkah 3: Konfigurasikan server web
Perbarui konfigurasi perangkat lunak server web Anda untuk menggunakan sertifikat HTTPS dan kunci privat PEM palsu yang Anda buat di langkah sebelumnya. Ingatlah untuk mencadangkan sertifikat dan kunci yang sudah ada sebelum memulai. Ini akan menyelesaikan pengaturan perangkat lunak server web Linux Anda untuk offload identitas SSL/TLS server. AWS CloudHSM
Menyelesaikan langkah-langkah dari salah satu bagian berikut.
Konfigurasikan server web NGINX
Gunakan bagian ini untuk mengkonfigurasi NGINX dengan Penyedia OpenSSL.
Untuk mengkonfigurasi NGINX untuk Penyedia OpenSSL
-
Hubungkan ke instans klien Anda.
-
Jalankan perintah berikut untuk membuat direktori yang diperlukan untuk sertifikat server web dan kunci privat PEM palsu.
$mkdir -p /etc/pki/nginx/private -
Jalankan perintah berikut untuk menyalin sertifikat server web Anda ke lokasi yang diperlukan. Ganti
<web_server.crt>dengan nama sertifikat server web Anda.$cp<web_server.crt>/etc/pki/nginx/server.crt -
Jalankan perintah berikut untuk menyalin kunci privat PEM palsu Anda ke lokasi yang diperlukan. Ganti
<web_server_fake_pem.key>dengan nama file yang berisi kunci pribadi PEM palsu Anda.$cp<web_server_fake_pem.key>/etc/pki/nginx/private/server.key -
Jalankan perintah berikut untuk mengubah kepemilikan file sehingga pengguna bernamanginx dapat membacanya.
$chown nginx /etc/pki/nginx/server.crt /etc/pki/nginx/private/server.key -
Konfigurasikan OpenSSL untuk menggunakan AWS CloudHSM penyedia. Untuk informasi selengkapnya tentang mengonfigurasi Penyedia OpenSSL, lihat Penye AWS CloudHSM dia OpenSSL untuk Klien SDK 5.
-
Temukan file konfigurasi OpenSSL Anda:
$openssl version -dAnda akan melihat output yang mirip dengan:
OPENSSLDIR: "/etc/pki/tls"File konfigurasi ada
openssl.cnfdi direktori ini. -
catatan
Jangan memodifikasi file openssl.cnf default sistem Anda secara langsung. Ini mencegah operasi OpenSSL di seluruh sistem (SSH, koneksi TLS, dan layanan lainnya) dari routing secara tidak sengaja melalui penyedia CloudHSM.
Menggunakan file konfigurasi terpisah memungkinkan Anda untuk menjangkau penggunaan Penyedia CloudHSM hanya untuk aplikasi tertentu yang memerlukan operasi HSM-backed kriptografi.
Buat file konfigurasi OpenSSL baru dengan konten berikut:
$cat >## NOTE: This should point to the system default openssl config file. # Replace /etc/pki/tls with the path to your OpenSSL configuration directory .include<example-cloudhsm-openssl.cnf><< 'EOF'</etc/pki/tls>/openssl.cnf # Override the existing provider_section to include AWS CloudHSM OpenSSL Provider as a 3rd party OpenSSL provider [provider_sect] default = default_sect # Include AWS CloudHSM CloudHSM OpenSSL provider cloudhsm = cloudhsm_sect [default_sect] activate = 1 [cloudhsm_sect] activate = 1EOF -
Pastikan variabel
CLOUDHSM_PINlingkungan diatur dengan kredensional pengguna kripto (CU) Anda:$export CLOUDHSM_PIN=<username>:<password> -
Setel variabel
OPENSSL_CONFlingkungan untuk menunjuk ke file konfigurasi yang diperbarui dan verifikasi penyedia dimuat:$OPENSSL_CONF=/path/to/example-cloudhsm-openssl.cnf openssl list -providersAnda akan melihat penyedia default dan penyedia CloudHSM terdaftar:
OPENSSL_CONF=/path/to/example-cloudhsm-openssl.cnf openssl list -providers Providers: default name: OpenSSL Default Provider version: 3.2.2 status: active cloudhsm name: AWS CloudHSM OpenSSL Provider version: 5.17.0 status: active
-
-
Jalankan perintah berikut untuk mencadangkan file
/etc/nginx/nginx.conf.$cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup -
Perbarui konfigurasi NGINX.
catatan
Setiap klaster dapat mendukung maksimum 1000 proses pekerja NGINX di semua server web NGINX.
Simpan file tersebut.
-
Cadangkan file konfigurasi
systemd, dan kemudian atur jalurEnvironmentFile. -
Periksa apakah file
/etc/sysconfig/nginxada, dan lakukan salah satu hal berikut:-
Jika file ada, buat cadangan file dengan menjalankan perintah berikut:
$cp /etc/sysconfig/nginx /etc/sysconfig/nginx.backup -
Jika file tidak ada, buka editor teks, dan kemudian membuat file bernama
nginxdalam folder/etc/sysconfig/.
-
-
Konfigurasikan lingkungan NGINX.
-
Mulai server web NGINX.
Setelah Anda mengkonfigurasi NGINX, buka. Verifikasi bahwa HTTPS menggunakan sertifikat yang Anda konfigurasikan
Konfigurasikan server web HAProxy
Gunakan bagian ini untuk mengkonfigurasi HAProxy dengan Penyedia OpenSSL. Contoh berikut menunjukkan cara mengatur HAProxy dengan sertifikat dan kunci CloudHSM Anda.
Untuk mengkonfigurasi HAProxy untuk Penyedia OpenSSL
-
Cadangkan file sertifikat gabungan yang ada jika ada:
$cp server-combined.pem server-combined.pem.backup -
Buat file sertifikat gabungan untuk HAProxy menggunakan sertifikat Anda dan kunci PEM palsu CloudHSM:
$cat server.crt server.key > server-combined.pem -
Cadangkan konfigurasi HAProxy yang ada:
$cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.backup -
Buat konfigurasi offload CloudHSM TLS baru di:
/etc/haproxy/haproxy.cfgglobal daemon ssl-provider cloudhsm # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/haproxy/dhparams.pem 2048 # ssl-dh-param-file /etc/haproxy/dhparams.pem ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305 ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend haproxy_frontend bind *:443 ssl crt /path/to/server-combined.pem default_backend web_servers backend web_servers server web1 127.0.0.1:8080 checkPerbarui jalur sertifikat agar sesuai dengan lokasi file Anda.
-
Konfigurasikan systemd untuk menggunakan file lingkungan untuk HAProxy. Lokasi tergantung pada distribusi Linux Anda.
-
Buat file lingkungan di lokasi yang sesuai untuk sistem Anda.
Ganti
<CU user name>dan<password>dengan kredenSIAL CU Anda. -
Muat ulang konfigurasi systemd:
$systemctl daemon-reload -
Mulai HAProxy dengan konfigurasi offload CloudHSM TLS:
$systemctl start haproxyAnda juga dapat menjalankan HAProxy secara langsung dengan file konfigurasi khusus:
$haproxy -f /path/to/haproxy-cloudhsm.cfg
Setelah Anda mengkonfigurasi HAProxy, buka. Verifikasi bahwa HTTPS menggunakan sertifikat yang Anda konfigurasikan
Langkah 4: Aktifkan lalu lintas HTTPS dan verifikasi sertifikat
Setelah Anda mengonfigurasi server web Anda untuk SSL/TLS offload dengan AWS CloudHSM, tambahkan instance server web Anda ke grup keamanan yang memungkinkan lalu lintas HTTPS masuk. Hal ini memungkinkan klien, seperti peramban web, untuk membuat koneksi HTTPS dengan server web Anda. Kemudian buat koneksi HTTPS ke server web Anda dan verifikasi bahwa itu menggunakan sertifikat yang Anda konfigurasi untuk SSL/TLS offload. AWS CloudHSM
Topik
Aktifkan koneksi HTTPS masuk
Untuk menyambungkan ke server web Anda dari klien (seperti peramban web), buat grup keamanan yang mengizinkan koneksi HTTPS masuk. Secara khusus, ini harus mengizinkan koneksi TCP masuk pada port 443. Tetapkan grup keamanan ini ke server web Anda.
Untuk membuat grup keamanan untuk HTTPS dan menetapkannya ke server web Anda
-
Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/
. -
Pilih Grup keamanan di panel navigasi.
-
Pilih Buat grup keamanan.
-
Untuk Buat Grup Keamanan, lakukan hal berikut:
-
Untuk Nama grup keamanan, ketik nama untuk grup keamanan yang Anda buat.
-
(Opsional) Ketik deskripsi grup keamanan yang Anda buat.
-
Untuk VPC, pilih VPC yang berisi instans Amazon EC2 server web Anda.
-
Pilih Tambahkan Aturan.
-
Untuk Jenis, pilih HTTPS dari jendela drop-down.
-
Untuk Sumber, masukkan lokasi sumber.
-
Pilih Buat grup keamanan.
-
-
Di panel navigasi, pilih Instans.
-
Pilih kotak centang di samping instans server web Anda.
-
Pilih menu tar ik -turun Tindakan di bagian atas halaman. Pilih Keamanan dan kemudian U bah Grup Keamanan.
-
Untuk Grup keamanan terkait, pilih kotak pencarian dan pilih grup keamanan yang Anda buat untuk HTTPS. Kemudian pilih Tambahkan Grup Keamanan.
-
Pilih Simpan.
Verifikasi bahwa HTTPS menggunakan sertifikat yang Anda konfigurasikan
Setelah menambahkan server web ke grup keamanan, Anda dapat memverifikasi bahwa SSL/TLS offload menggunakan sertifikat yang ditandatangani sendiri. Anda dapat melakukan ini dengan peramban web atau dengan alat seperti OpenSSL s_client
Untuk memverifikasi SSL/TLS offload dengan browser web
-
Gunakan browser web untuk terhubung ke server web Anda menggunakan nama DNS publik atau alamat IP server. Pastikan bahwa URL di bilah alamat dimulai dengan https://. Misalnya,
https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/.Tip
Anda dapat menggunakan layanan DNS seperti Amazon Route 53 untuk merutekan nama domain situs web Anda (misalnya,https://www.example.com/) ke server web Anda. Untuk informasi selengkapnya, lihat Perutean Lalu Lintas ke Instans Amazon EC2dalam Panduan Developer Amazon Route 53 atau dalam dokumentasi untuk layanan DNS Anda.
-
Gunakan peramban web Anda untuk melihat sertifikat server web. Untuk informasi lebih lanjut, lihat hal berikut:
-
Para Mozilla Firefox, lihat Lihat Sertifikat
di situs web Dukung Mozilla. -
Untuk Google Chrome, lihat Memahami Masalah Keamanan
pada Alat Google Tools untuk Pengembang Web.
Peramban web lain mungkin memiliki fitur serupa yang dapat Anda gunakan untuk melihat sertifikat server web.
-
-
Pastikan bahwa SSL/TLS sertifikat adalah yang Anda konfigurasikan server web Anda untuk digunakan.
Untuk memverifikasi SSL/TLS offload dengan OpenSSL s_client
-
Jalankan perintah OpenSSL berikut untuk terhubung ke server web Anda menggunakan HTTPS. Ganti
<server name>dengan nama DNS publik atau alamat IP server web Anda.openssl s_client -connect<server name>:443Tip
Anda dapat menggunakan layanan DNS seperti Amazon Route 53 untuk merutekan nama domain situs web Anda (misalnya,https://www.example.com/) ke server web Anda. Untuk informasi selengkapnya, lihat Perutean Lalu Lintas ke Instans Amazon EC2dalam Panduan Developer Amazon Route 53 atau dalam dokumentasi untuk layanan DNS Anda.
-
Pastikan bahwa SSL/TLS sertifikat adalah yang Anda konfigurasikan server web Anda untuk digunakan.
Anda sekarang memiliki situs web yang diamankan dengan HTTPS. Kunci pribadi untuk server web disimpan dalam HSM di AWS CloudHSM cluster Anda.
Untuk menambahkan penyeimbang beban, lihatTambahkan penyeimbang beban dengan Elastic Load Balancing AWS CloudHSM untuk (opsional).