函式名稱:openssl_csr_sign()
適用版本:PHP 4 >= 4.2.0, PHP 5, PHP 7
函式描述:openssl_csr_sign() 函式用於使用給定的CSR(Certificate Signing Request)進行簽名,並生成一個SSL證書。
語法:bool openssl_csr_sign(resource $csr, mixed $cacert, mixed $priv_key, int $days[, array $configargs[, int $serial]]): resource|false
引數:
- $csr:CSR資源,透過openssl_csr_new()函式生成。
- $cacert:CA證書資源,透過openssl_x509_read()函式讀取。
- $priv_key:私鑰資源,透過openssl_pkey_get_private()函式獲取。
- $days:證書的有效期(天數)。
- $configargs:可選引數,用於指定額外的配置選項,如擴充套件資訊等。預設值為NULL。
- $serial:可選引數,證書的序列號。預設值為0。
返回值:
- 成功時返回生成的SSL證書資源。
- 失敗時返回false。
示例:
// 生成CSR(Certificate Signing Request)
$dn = array(
"countryName" => "CN",
"stateOrProvinceName" => "Beijing",
"organizationName" => "Example Company",
"commonName" => "www.example.com"
);
$privateKey = openssl_pkey_new();
$csr = openssl_csr_new($dn, $privateKey);
// 讀取CA證書和私鑰
$cacert = openssl_x509_read(file_get_contents("ca.crt"));
$privKey = openssl_pkey_get_private(file_get_contents("private.key"));
// 簽名CSR並生成SSL證書
$days = 365; // 證書有效期為1年
$cert = openssl_csr_sign($csr, $cacert, $privKey, $days);
// 將生成的SSL證書儲存到檔案
openssl_x509_export_to_file($cert, "ssl_cert.crt");
// 輸出生成的SSL證書內容
echo openssl_x509_export($cert);
注意事項:
- 在使用openssl_csr_sign()函式之前,需要先生成CSR和私鑰,以及獲取CA證書和私鑰資源。
- 可以使用openssl_pkey_new()函式生成私鑰,openssl_csr_new()函式生成CSR,openssl_x509_read()函式讀取CA證書,openssl_pkey_get_private()函式獲取私鑰資源。
- 可以使用openssl_x509_export_to_file()函式將生成的SSL證書儲存到檔案,使用openssl_x509_export()函式輸出生成的SSL證書內容。
- 證書有效期的單位是天,可以根據實際需求設定合適的有效期。
- 可以透過配置選項引數$configargs來指定額外的配置資訊,如擴充套件資訊等。
- 可以透過$serial引數設定證書的序列號,若不指定則預設為0。