2012-03-07 16 views
5

Jak ustawić cel certyfikatu X.509 na X509_PURPOSE_ANY w PHP 5.x?Jak zdefiniować określony cel certyfikatu X509 w PHP

następujące wyjścia kod to ostrzeżenie:

Uwaga: openssl_csr_new() [function.openssl-CSR new.php] dn: X509_PURPOSE nie jest rozpoznawana nazwa/Home/www/index. php on line 45

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

Ostatnia linia to linia 45.

+1

Czy próbowałeś upuścić pojedyncze cytaty '' 'z tablicy' $ ExtraAttribs'? –

+1

Nie działa. Komunikat o błędzie: "Używanie niezdefiniowanej stałej X509_PURPOSE - założono" X509_PURPOSE "" – Mike

+4

Nie mogę znaleźć żadnego wskazania, że ​​certyfikaty X509 mają "cel". Mogę znaleźć tylko "Podstawowe ograniczenia", "Użycie klucza" i "Ulepszone użycie klucza", czy możesz to zrobić z OpenSSL w linii poleceń? – Martin

Odpowiedz

5

Nie mogę znaleźć żadnego dowodu, że certyfikaty X509 mają "cel". Mogę znaleźć tylko "Podstawowe ograniczenia", "Użycie klucza" i "Ulepszone użycie klucza".

Najbliższy rzeczą mogłyby znaleźć jest http://www.openssl.org/docs/apps/verify.html który mówi

Dla kompatybilności z poprzednimi wersjami SSLeay i OpenSSL zaświadczenie bez ustawień zaufanie jest uważane za ważne dla wszystkich celów.

+0

dzięki za pomoc – Mike

4

Cel jest ustawiony na podpisywanie - nie w CSR. Szybkie spojrzenie na dokumenty php sugeruje, że nie jest to obsługiwane przez API - ale możesz zadzwonić pod numer openssl x509 from the shell