2012-03-07 29 views
5

如何在PHP 5.x中將X.509證書的用途設置爲X509_PURPOSE_ANY如何在PHP中定義X509證書的特定用途

下面的代碼輸出此警告:

警告:openssl_csr_new()[function.openssl-CSR-new.php]:DN:X509_PURPOSE是不可識別的名稱在/ home/WWW /索引。 PHP的第45行上

PHP腳本:

$Configs = array(  
     'config' => 'test.cnf', 
     'digest_alg' => 'sha1', 
     'x509_extensions' => 'v3_ca', 
     'req_extensions' => 'v3_req', 
     'private_key_bits' => 2048, 
     'private_key_type' => OPENSSL_KEYTYPE_RSA, 
     'encrypt_key' => true, 
     'encrypt_key_cipher' => OPENSSL_CIPHER_3DES); 

$ExtraAttribs = array('X509_PURPOSE' => 'X509_PURPOSE_ANY'); 

//create cert 
$dn  = array('commonName' => 'Chief'); 
$privkey = openssl_pkey_new($Configs); 
$csr  = openssl_csr_new($dn, $privkey, $Configs, $ExtraAttribs); 

最後一行是45行

+1

您是否嘗試從'$ ExtraAttribs'數組中刪除單引號'''? – 2012-03-09 07:04:20

+1

不起作用。錯誤消息:「使用未定義的常量X509_PURPOSE - 假定爲'X509_PURPOSE'」 – Mike 2012-03-09 13:58:39

+4

我找不到任何指示X509證書具有「目的」。我只能找到「基本約束」,「密鑰用法」和「增強密鑰用法」,您是否可以通過命令行從OpenSSL執行此操作? – Martin 2012-03-09 20:47:42

回答

5

我找不到任何表明X509證書有「目的」的跡象。我只能找到「基本限制」,「密鑰使用」和「增強密鑰使用」。

我能找到的最接近的是http://www.openssl.org/docs/apps/verify.html它說

對於不信任設置證書被認爲是適用於所有目的的SSLeay和OpenSSL的以前版本的兼容性。

+0

感謝您的幫助 – Mike 2012-03-16 01:17:14