2015-11-17 73 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