2012-03-07 52 views
5

Làm cách nào tôi có thể đặt mục đích của chứng chỉ X.509 thành X509_PURPOSE_ANY bằng PHP 5.x?Cách xác định mục đích cụ thể của chứng chỉ X509 trong PHP

Các đầu ra mã sau cảnh báo này:

Cảnh báo: openssl_csr_new() [function.openssl-csr-new.php]: dn: X509_PURPOSE không phải là một tên được công nhận trong/home/www/index. php on line 45

PHP Script:

$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); 

dòng cuối cùng là dòng 45.

+1

Bạn đã thử bỏ các dấu nháy đơn ''' khỏi mảng '$ ExtraAttribs'? –

+1

Không hoạt động. Thông báo lỗi: "Sử dụng hằng số không xác định X509_PURPOSE - giả định 'X509_PURPOSE'" – Mike

+4

Tôi không thể tìm thấy bất kỳ dấu hiệu nào cho thấy chứng chỉ X509 có "mục đích". Tôi chỉ có thể tìm thấy "Ràng buộc cơ bản", "Sử dụng khóa" và "Sử dụng khóa nâng cao", bạn có thể thực hiện điều này từ OpenSSL trên dòng lệnh không? – Martin

Trả lời

5

Tôi không thể tìm thấy bất kỳ dấu hiệu nào cho thấy chứng chỉ X509 có "mục đích". Tôi chỉ có thể tìm thấy "Hạn chế cơ bản", "Sử dụng khóa" và "Sử dụng khóa nâng cao".

Điều gần nhất tôi có thể tìm thấy là http://www.openssl.org/docs/apps/verify.html mà nói

Đối với khả năng tương thích với các phiên bản trước của SSLeay và OpenSSL giấy chứng nhận không có cài đặt ủy thác được coi là hợp lệ cho tất cả các mục đích.

+0

cảm ơn sự giúp đỡ của bạn – Mike

4

Mục đích được đặt khi ký - không phải trong CSR. Xem nhanh tài liệu php gợi ý rằng điều này không được API hỗ trợ - nhưng bạn có thể gọi openssl x509 from the shell

Các vấn đề liên quan