函数名称: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。