KMS執行個體SDK for PHP協助您通過簡單的編程訪問KMS執行個體API,實現加密解密、簽名驗簽和擷取憑據資訊的業務訴求。本文介紹如何安裝SDK以及如何調用介面進行加密解密、簽名驗簽和擷取憑據值。
背景資訊
KMS提供了多種類型的開發工具(SDK),請您在使用前先瞭解各SDK的使用情境。更多資訊,請參見SDK參考。
您可以訪問開原始碼倉庫,查看SDK源碼及程式碼範例。同時也歡迎您提出寶貴意見,或者提供程式碼範例。
前提條件
已購買和啟用KMS執行個體。具體操作,請參見購買和啟用KMS執行個體。
已完成密鑰和憑據的建立。具體操作,請參見密鑰管理快速入門、密鑰管理快速入門、建立憑據。
說明如果您的業務不涉及憑據,則無需建立憑據。
已建立應用存取點並儲存了Client Key、擷取KMS執行個體CA認證。具體操作,請參見建立應用存取點。
請確保應用程式運行環境可訪問KMS執行個體VPC地址。
業務情境
說明
應用程式運行環境和KMS執行個體在同一個地區,且屬於同一個VPC
預設應用程式運行環境和KMS執行個體間網路互連,您無需配置。
應用程式運行環境和KMS執行個體在同一個地區,但屬於不同VPC
您需要配置多個VPC訪問同一個KMS執行個體,具體操作,請參見同地區多VPC訪問KMS執行個體。
安裝SDK
方式一(推薦):通過Composer來管理專案依賴
通過如下方式之一,安裝AlibabaCloud DKMS-GCS SDK for PHP作為依賴項。
在專案的根目錄中運行
composer require alibabacloud/dkms-gcs-sdk
。在
composer.json
檔案中添加依賴關係。"require": { "alibabacloud/dkms-gcs-sdk": "SDK版本" }
說明建議您安裝SDK的最新版本,關於版本的更多資訊,請參見開原始碼倉庫。
在專案的根目錄中,執行
composer install
安裝依賴。使用Composer安裝完成後,在PHP代碼中引入依賴。
require_once __DIR__ . '/vendor/autoload.php';
方式二:直接下載SDK源碼
訪問開原始碼倉庫下載SDK源碼,在PHP代碼中引入SDK目錄下的
autoload.php
檔案。require_once '/path/to/dkms-gcs-sdk/autoload.php';
初始化SDK用戶端
使用PHP SDK發起KMS執行個體API請求,您需要初始化一個Client執行個體。
初始化Client執行個體。
<?php use AlibabaCloud\Dkms\Gcs\Sdk\Client as AlibabaCloudDkmsGcsSdkClient; use AlibabaCloud\Dkms\Gcs\OpenApi\Models\Config as AlibabaCloudDkmsGcsOpenApiConfig; $config = new AlibabaCloudDkmsGcsOpenApiConfig(); //連線協定請設定為"https"。KMS執行個體服務僅允許通過HTTPS協議訪問。 $config->protocol = 'https'; //設定endpoint為<your KMS Instance Id>.cryptoservice.kms.aliyuncs.com。 $config->endpoint = '<yourKMSInstanceId>.cryptoservice.kms.aliyuncs.com'; //Client Key。 $config->clientKeyContent = '<your client key content>'; //Client Key口令。 $config->password = '<your client key password>'; $client = new AlibabaCloudDkmsGcsSdkClient($config);
通過配置運行時參數(
RuntimeOptions
)設定KMS執行個體的CA認證。重要為保障生產環境通訊安全,建議您保持開啟驗證SSL/TLS認證有效性。如您確有需要關閉驗證SSL/TLS認證,例如線下測試情境,可通過將運行時參數(
RuntimeOptions
)的ignoreSSL
欄位設定為true實現。設定
RuntimeOptions
的verify
欄位為KMS執行個體CA憑證路徑。程式碼範例如下:<?php use AlibabaCloud\Dkms\Gcs\OpenApi\Util\Models\RuntimeOptions; $runtimeOptions = new RuntimeOptions(); $runtimeOptions->verify = 'path/to/caCert.pem';
使用已初始化的Client調用KMS執行個體API
初始化Client後,您可以通過Client調用KMS執行個體API,本文介紹如下幾個使用情境和程式碼範例。關於KMS執行個體API的詳細資料,請參見API概覽。
調用Encrypt介面使用對稱金鑰密碼編譯資料
詳細程式碼範例,請參見原始代碼。
<?php require __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Dkms\Gcs\Sdk\Models\EncryptRequest; $encryptRequest = new EncryptRequest(); //密鑰的ID或別名(Alias)。 $encryptRequest->keyId = '<your cipher key id>'; //待加密資料。 $encryptRequest->plaintext = AlibabaCloud\Tea\Utils\Utils::toBytes('encrypt plaintext'); $encryptResponse = $client->encryptWithOptions($encryptRequest, $runtimeOptions); //密文。 $ciphertextBlob = $encryptResponse->ciphertextBlob; //Cipher初始向量,用於解密資料。 $iv = $encryptResponse->iv; //請求ID。 $requestId = $encryptResponse->requestId;
調用Decrypt介面使用對稱金鑰解密密文
詳細程式碼範例,請參見原始代碼。
<?php require __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Dkms\Gcs\Sdk\Models\DecryptRequest; $decryptRequest = new DecryptRequest(); //密鑰的ID或別名(Alias)。 $decryptRequest->keyId = '<your cipher key id>'; //待解密資料,加密返回的密文。 $decryptRequest->ciphertextBlob = <your ciphertext>; //Cipher初始向量,必須與加密時一致。 $decryptRequest->iv = <IV value>; $decryptResponse = $client->decryptWithOptions($decryptRequest, $runtimeOptions); //原始明文資料。 $plaintext = $decryptResponse->plaintext; //請求ID。 $requestId = $decryptResponse->requestId;
調用Sign介面使用非對稱金鑰進行數位簽章
詳細程式碼範例,請參見原始代碼。
<?php require __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Dkms\Gcs\Sdk\Models\SignRequest; $signRequest = new SignRequest(); //密鑰的ID或別名(Alias)。 $signRequest->keyId = 'your cipher key id'; //待簽名資料。 $signRequest->message = <the data to sign>; $signResponse = $client->signWithOptions($signRequest, $runtimeOptions); //簽名值。 $signature = $signResponse->signature; //請求ID。 $requestId = $signResponse->requestId;
調用Verify介面使用非對稱金鑰驗證數位簽章
詳細程式碼範例,請參見原始代碼。
<?php require __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Dkms\Gcs\Sdk\Models\VerifyRequest; $verifyRequest = new VerifyRequest(); //密鑰的ID或別名(Alias)。 $verifyRequest->keyId = 'your cipher key id'; //待驗證簽名的資料。 $verifyRequest->message = <the data to sign>; //待驗證簽名值。 $verifyRequest->signature = <the signature to verify>; $verifyResponse = $client->verifyWithOptions($verifyRequest, $runtimeOptions); //驗簽結果。 $value = $verifyResponse->value; //請求ID。 $requestId = $verifyResponse->requestId;
調用GetSecretValue介面擷取憑據值
詳細程式碼範例,請參見原始代碼。
重要0.2.2及以上版本的KMS執行個體SDK for PHP才支援擷取憑據值。
<?php require __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Dkms\Gcs\Sdk\Models\GetSecretValueRequest; // 您在KMS建立的憑據名稱。 $secretName = '<your secret name>'; $getSecretValueRequest = new GetSecretValueRequest([ 'secretName' => $secretName, ]); // 調用擷取憑據介面。 $getSecretValueResponse = $client->getSecretValueWithOptions($getSecretValueRequest, $runtimeOptions); // 憑據值。 $_secretData = $getSecretValueResponse->secretData; // 請求ID。 $_requestId = $getSecretValueResponse->requestId;