All Products
Search
Document Center

Key Management Service:Dedicated KMS SDK for PHP

Last Updated:Apr 01, 2026

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-******.pem

    • Key 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

  1. Beralih ke direktori proyek Anda dan jalankan perintah berikut untuk menambahkan SDK sebagai dependensi:

    composer require alibabacloud/dkms-gcs-sdk
  2. Deklarasikan dependensi dalam file composer.json Anda:

    "require": {
      "alibabacloud/dkms-gcs-sdk": "<SDK version>"
    }

    Untuk versi SDK terbaru, lihat repositori kode sumber terbuka.

  3. Instal dependensi tersebut:

    composer install
  4. Rujuk 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;
Penting

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:

PlaceholderDeskripsiContoh
<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.

Penting

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;

Langkah selanjutnya