2015-11-17 65 views
2

我目前正在编写一个脚本来通过Web界面生成CSR以提交生成证书。我目前的问题是我想生成一个SAN证书,但我找不到任何有关如何将subjectAlternateName添加到生成的证书请求中的信息。在PHP中生成SAN CSR

我当前的代码是:

$private_key = openssl_pkey_new(array('private_key_bits' => 2048)); 
$domain_data = [ 
    "countryName"   => 'GB', 
    "stateOrProvinceName" => 'Countyname', 
    "localityName"   => 'townname', 
    "organizationName"  => 'Company ltd.', 
    "organizationalUnitName" => "IT", 
    "emailAddress"   => '[email protected]', 
    "commonName"    => 'example.com', 
]; 
$config_args = ['private_key_bits' => 2048]; 
$attributes = []; 

$csr = openssl_csr_new($domain_data, $private_key, $config_args, $attributes); 

openssl_csr_export($csr, $csr_out); 

添加subjectAlternateName$domain_data阵列似乎并不添加任何东西到CSR的时候我后来解析它。

是否有可能直接在PHP中做到这一点?

+1

Da codez,plz!您可能想阅读[我如何提出一个好问题](http://stackoverflow.com/help/how-to-ask),这会增加获得有用答案的可能性_drastically_。你可能会发现[ESR](https://en.m.wikipedia.org/wiki/Eric_S._Raymond)的优秀论文[如何提问智能方式](http://catb.org/~esr/) faqs/smart-questions.html)也很有帮助。 –

回答

1

我已经设法解决这个问题,通过生成我的openssl.cnf文件的临时副本,其中注入subjectAltName行。这个配置然后可以通过设置$config_args['config'] = $temporaryfilepath