openssl_csr_export

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

openssl_csr_exportExports a CSR as a string

说明

bool openssl_csr_export ( mixed $csr , string &$out [, bool $notext = true ] )

openssl_csr_export() takes the Certificate Signing Request represented by csr and stores it in PEM format in out, which is passed by reference.

参数

csr

See CSR parameters for a list of valid values.

out

on success, this string will contain the PEM encoded CSR

notext

可选参数 notext 影响输出的冗余度。如果设为 FALSE,输出内容将包含附加的人类可读信息。notext 的缺省值为 TRUE

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

Example #1 openssl_csr_export() example

<?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;
?>

参见

User Contributed Notes

carlos AT wfmh DOT org DOT pl 27-Jun-2002 04:44
Here you come with the example of how to use this function.

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

Keep in mind that keys are case sensitive (i.e. give "email" instead of "Email" and you get warning). Also remember it's important to keep the order of the arguments in array. Move the "Email" above commonName and check what you get (in case you don't know how: "openssl req -noout -text -in out.csr").

It also happened to me me I got segfault when order was rubbish (afair Email after countryName, or plenty Email's here and there), so be awared.