PHP Conference Japan 2024

openssl_csr_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_csr_exportCSR 导出为字符串

描述

openssl_csr_export(OpenSSLCertificateSigningRequest|string $csr, string &$output, bool $no_text = true): bool

openssl_csr_export() 获取由 csr 表示的证书签名请求,并将其以 PEM 格式存储在 output 中,该参数通过引用传递。

参数

csr

有关有效值的列表,请参见 CSR 参数

output

成功时,此字符串将包含 PEM 编码的 CSR

no_text

可选参数 notext 影响输出的详细程度;如果它是 false,则输出中包含其他人类可读的信息。 notext 的默认值为 true

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
8.0.0 csr 现在接受 OpenSSLCertificateSigningRequest 实例;以前,接受类型为 OpenSSL X.509 CSR资源

范例

示例 #1 openssl_csr_export() 示例

<?php
$subject
= array(
"commonName" => "example.com",
);
$private_key = openssl_pkey_new(array(
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));
$configargs = array(
'digest_alg' => 'sha256WithRSAEncryption'
);
$csr = openssl_csr_new($subject, $private_key, $configargs);
openssl_csr_export($csr, $csr_string);
echo
$csr_string;
?>

参见

添加注释

用户贡献的注释 1 条注释

carlos AT wfmh DOT org DOT pl
22 年前
这里提供了如何使用此函数的示例。

if( $csr = openssl_csr_new( array(
"countryName"=>"PL",
"stateOrProvinceName" => "blah",
"organizationName" => "company ltd",
"commonName"=>"foo.bar.com",
"Email"=>"[email protected]"), $privkey )
)
{
openssl_csr_export_to_file( $csr, "out.csr");
}
else
{
printf("failed\n");
}

请记住,键区分大小写(例如,使用“email”而不是“Email”,您会收到警告)。还要记住,数组中参数的顺序很重要。将“Email”移到 commonName 上方,并检查您得到的结果(如果您不知道如何操作:“openssl req -noout -text -in out.csr”)。

我也遇到过这种情况,当我乱序排列时(如果我记得没错,Email 在 countryName 之后,或者这里有很多 Email),会导致段错误,所以请注意。
To Top