Dedicated KMS SDK for PHP memungkinkan Anda memanggil operasi API Dedicated Key Management Service (KMS) untuk enkripsi data, dekripsi, penandatanganan digital, verifikasi signature, dan pengambilan nilai rahasia.
Halaman ini mencakup cara:
Menginstal SDK menggunakan Composer atau unduhan sumber
Menginisialisasi client dengan sertifikat CA dan key client
Mengenkripsi dan mendekripsi data menggunakan customer master key (CMK) simetris
Menandatangani dan memverifikasi data menggunakan CMK asimetris
Mengambil nilai rahasia
Kode sumber SDK dan contoh kode tersedia di repositori kode sumber terbuka.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans Dedicated KMS yang telah dibeli dan terhubung ke kluster hardware security module (HSM), dengan CMK dan application access endpoint (AAP) yang telah dibuat. Untuk petunjuk penyiapan, lihat Menghubungkan aplikasi ke instans Dedicated KMS Edisi Standar.
File sertifikat CA dan key client yang disimpan secara lokal:
Sertifikat CA:
PrivateKmsCA_kst-******.pemKey client:
ClientKey_******.json
Titik akhir virtual private cloud (VPC) untuk instans Dedicated KMS Anda. Titik akhir tersebut harus sesuai dengan yang ditentukan saat kluster HSM diaktifkan dan harus dapat diakses dari mesin Anda. Untuk detailnya, lihat Menanyakan instans Dedicated KMS Edisi Standar.
Menginstal SDK
Metode 1 (disarankan): Composer
Beralih ke direktori proyek Anda dan jalankan perintah berikut untuk menambahkan SDK sebagai dependensi:
composer require alibabacloud/dkms-gcs-sdkDeklarasikan dependensi dalam file
composer.jsonAnda:"require": { "alibabacloud/dkms-gcs-sdk": "<SDK version>" }Untuk versi SDK terbaru, lihat repositori kode sumber terbuka.
Instal dependensi tersebut:
composer installRujuk autoloader dalam kode PHP Anda:
require_once __DIR__ . '/vendor/autoload.php';
Metode 2: Unduh kode sumber
Unduh kode sumber SDK dari repositori kode sumber terbuka dan rujuk autoloader secara langsung:
require_once '/path/to/dkms-gcs-sdk/autoload.php';Menginisialisasi client
Konfigurasikan sertifikat CA dan buat instans client sebelum melakukan panggilan API.
Langkah 1: Konfigurasi sertifikat CA
Lingkungan produksi: Atur bidang verify dalam RuntimeOptions ke path sertifikat CA Anda:
<?php
use AlibabaCloud\Dkms\Gcs\OpenApi\Util\Models\RuntimeOptions;
$runtimeOptions = new RuntimeOptions();
$runtimeOptions->verify = 'path/to/caCert.pem';
// Teruskan $runtimeOptions ke setiap panggilan API, contohnya:
// $encryptResponse = $client->encryptWithOptions($encryptRequest, $runtimeOptions);Lingkungan pengembangan: Atur ignoreSSL untuk sementara melewati verifikasi sertifikat:
<?php
use AlibabaCloud\Dkms\Gcs\OpenApi\Util\Models\RuntimeOptions;
$runtimeOptions = new RuntimeOptions();
$runtimeOptions->ignoreSSL = true;Gunakan ignoreSSL = true hanya di lingkungan pengembangan. Selalu konfigurasikan sertifikat CA yang valid di lingkungan produksi.
Langkah 2: Buat client
Buat objek Config dengan kredensial instans Anda, lalu buat instans client. Titik akhir tidak boleh menyertakan skema https://.
<?php
use AlibabaCloud\Dkms\Gcs\Sdk\Client as AlibabaCloudDkmsGcsSdkClient;
use AlibabaCloud\Dkms\Gcs\OpenApi\Models\Config as AlibabaCloudDkmsGcsOpenApiConfig;
$config = new AlibabaCloudDkmsGcsOpenApiConfig();
// Protokol koneksi. Harus https.
$config->protocol = 'https';
// Konten key client dari instans Dedicated KMS Anda.
$config->clientKeyContent = '<your-client-key-content>';
// Password yang digunakan untuk mendekripsi key client.
$config->password = '<your-client-key-password>';
// Titik akhir instans Dedicated KMS Anda, tanpa skema https://.
// Format: <service_id>.cryptoservice.kms.aliyuncs.com
$config->endpoint = '<your-dkms-instance-endpoint>';
$client = new AlibabaCloudDkmsGcsSdkClient($config);Ganti placeholder berikut:
| Placeholder | Deskripsi | Contoh |
|---|---|---|
<your-client-key-content> | Konten file key client (ClientKey_******.json) | — |
<your-client-key-password> | Password untuk mendekripsi key client | — |
<your-dkms-instance-endpoint> | Titik akhir instans Dedicated KMS, tanpa awalan https:// | kst-example.cryptoservice.kms.aliyuncs.com |
Contoh
Semua contoh menggunakan objek $client dan $runtimeOptions yang dibuat pada bagian Menginisialisasi client.
Enkripsi data
Gunakan operasi Encrypt untuk mengenkripsi data dengan CMK simetris. Respons mencakup ciphertext dan vektor inisialisasi (IV) yang diperlukan untuk dekripsi.
Contoh lengkap: AesEncryptDecrypt.php
<?php
require __DIR__ . '/vendor/autoload.php';
use AlibabaCloud\Dkms\Gcs\Sdk\Models\EncryptRequest;
$encryptRequest = new EncryptRequest();
// ID atau alias CMK simetris.
$encryptRequest->keyId = '<your-key-id>';
// Data yang akan dienkripsi, dalam bentuk array byte.
$encryptRequest->plaintext = \AlibabaCloud\Dkms\Gcs\OpenApi\Util\Utils::toBytes('your plaintext');
$encryptResponse = $client->encryptWithOptions($encryptRequest, $runtimeOptions);
$ciphertextBlob = $encryptResponse->ciphertextBlob; // Ciphertext
$iv = $encryptResponse->iv; // Vektor inisialisasi (diperlukan untuk dekripsi)
$requestId = $encryptResponse->requestId;Dekripsi data
Gunakan operasi Decrypt untuk mendekripsi ciphertext. Sediakan IV yang sama seperti yang dikembalikan oleh operasi Encrypt.
Contoh lengkap: AesEncryptDecrypt.php
<?php
require __DIR__ . '/vendor/autoload.php';
use AlibabaCloud\Dkms\Gcs\Sdk\Models\DecryptRequest;
$decryptRequest = new DecryptRequest();
// ID atau alias CMK simetris yang digunakan untuk enkripsi.
$decryptRequest->keyId = '<your-key-id>';
// Ciphertext yang dikembalikan oleh operasi Encrypt.
$decryptRequest->ciphertextBlob = $ciphertextBlob;
// Vektor inisialisasi yang dikembalikan oleh operasi Encrypt. Harus sesuai dengan nilai yang digunakan saat enkripsi.
$decryptRequest->iv = $iv;
$decryptResponse = $client->decryptWithOptions($decryptRequest, $runtimeOptions);
$plaintext = $decryptResponse->plaintext;
$requestId = $decryptResponse->requestId;Tandatangani data
Gunakan operasi Sign untuk menghasilkan signature digital dengan CMK asimetris.
Contoh lengkap: SignVerify.php
<?php
require __DIR__ . '/vendor/autoload.php';
use AlibabaCloud\Dkms\Gcs\Sdk\Models\SignRequest;
$signRequest = new SignRequest();
// ID atau alias CMK asimetris.
$signRequest->keyId = '<your-key-id>';
// Data yang akan ditandatangani, dalam bentuk array byte.
$signRequest->message = $message;
$signResponse = $client->signWithOptions($signRequest, $runtimeOptions);
$signature = $signResponse->signature; // Nilai signature
$requestId = $signResponse->requestId;Verifikasi signature
Gunakan operasi Verify untuk memverifikasi signature digital terhadap data aslinya.
Contoh lengkap: SignVerify.php
<?php
require __DIR__ . '/vendor/autoload.php';
use AlibabaCloud\Dkms\Gcs\Sdk\Models\VerifyRequest;
$verifyRequest = new VerifyRequest();
// ID atau alias CMK asimetris.
$verifyRequest->keyId = '<your-key-id>';
// Data asli yang telah ditandatangani.
$verifyRequest->message = $message;
// Signature yang akan diverifikasi.
$verifyRequest->signature = $signature;
$verifyResponse = $client->verifyWithOptions($verifyRequest, $runtimeOptions);
$isValid = $verifyResponse->value; // true jika signature valid
$requestId = $verifyResponse->requestId;Ambil nilai rahasia
Gunakan operasi GetSecretValue untuk mengambil rahasia yang disimpan di instans Dedicated KMS.
GetSecretValue memerlukan Dedicated KMS SDK for PHP V0.2.2 atau yang lebih baru.
Contoh lengkap: GetSecretValue.php
<?php
require __DIR__ . '/vendor/autoload.php';
use AlibabaCloud\Dkms\Gcs\Sdk\Models\GetSecretValueRequest;
$getSecretValueRequest = new GetSecretValueRequest([
'secretName' => '<your-secret-name>',
]);
$getSecretValueResponse = $client->getSecretValueWithOptions($getSecretValueRequest, $runtimeOptions);
$secretData = $getSecretValueResponse->secretData;
$requestId = $getSecretValueResponse->requestId;