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 个注释

3
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