2015-12-24 12 views
6

Ho usato il seguente comando per generare un CSR:PHP openssl_x509_parse non restituisce i dati per la RSI

openssl req -nodes -newkey rsa:2048 -keyout mytestserver.key -out mytestserver.csr 

ho cercato di decodificare il mytestserver.csr con il seguente codice PHP:

<?php 

$mydata="-----BEGIN CERTIFICATE REQUEST----- 
MIICyDCCAbACAQAwgYIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJOSDEQMA4GA1UE 
BxMHQ29uY29yZDESMBAGA1UEChMJTXljb21wYW55MQswCQYDVQQLEwJJVDETMBEG 
A1UEAxMKbXl0ZXN0LmNvbTEeMBwGCSqGSIb3DQEJARYPdGVzdGVyQHRlc3QuY29t 
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3CcljODQKIJQ9xnPFydW 
E6fRphmfxtDZF46/J6jT7ctzG3Mv//8p9ene60BCDIWdWiDXvUUUc02nb/qiiaP5 
lALl6XeLKOKs6ZEC/lknDfgOBSjqvLz+UzlOXjRdhBpaawaEbVw4rh6idHWIOFGT 
lzuHmE8YBmJ7R+tfhmEETk5XtPRZ3RL173HH2R/f2YCh0uhMr4GqXVfHtWrkpiw7 
gXjvaXFeQhslTSP7Pru8j39uYKqubwLTyJ1uoqHVVOIqmswz+WfSvn+c86VK44p0 
oQQnFL1gHoUWBHSbTmU49ufOWog9oLHOo9GUnMRg9TntGL0s55rfmSTZ+qtyB8Lc 
7wIDAQABoAAwDQYJKoZIhvcNAQEEBQADggEBALglJeJUBEmxTy1hE0jG4cPAaJe5 
FOqaVCUDm4YeoTpLfYLgE7ZkWuqkhZdw4TR9wu4DkiYo9z94avrKzFj2Kq1JHjUX 
weYAHzGxtFO2IUuz7DSGfSvfJ0mMkAH+QtaxNUV2olnrdA8T5hRzgbZT2RTCc0GV 
iSyCKXj4O/yRt0lbBCdM/Lja3Yga2BrFtvcsqnaDO6kIj+x1YCpL3cpRsm+3XbvH 
dE02+hB/iHC0bE4lQciPCASOiXbMWASWxofFjyRCP+Ha+np/FqoxRF6DIUu10dCS 
wV2kkbQQhNsFuMzCJvYudsmG1ULUfjUTvCAgO9kdBweNg3nklzetoSWoE5k= 
-----END CERTIFICATE REQUEST-----"; 

print ("\r\n begin"); 
print_r(openssl_x509_parse($mydata)); 

print ("\r\n end"); 

Ma dà un risultato vuoto.

Qualche idea su come utilizzare la libreria OpenSSL di PHP per decodificare RSA CSR che ho generato?

+0

mentre debuggging, uso var_dump(), non print_r(), anche, assicurarsi che si sta usando error_reporting (E_ALL); – hanshenrik

+0

hanshenrik, grazie per il tuo suggerimento. – mnnmountain

risposta

3

openssl_x509_parse() viene utilizzato per "analizzare un certificato X509". Per analizzare una richiesta di registrazione , è possibile utilizzare openssl_csr_get_subject() e openssl_csr_get_public_key().

per recuperare i dettagli chiave pubblica si sarebbe poi utilizzare openssl_pkey_get_details():

$keyres = openssl_csr_get_public_key($mydata); 
$key = openssl_pkey_get_details($keyres); 
echo "$key[bits] bit public key follows:\n$key[key]\n"; 
+0

miken32, grazie mille per il tuo suggerimento. In realtà, ho provato a generare i valori O, OU, UN, emailAddress dal CSR di input. Ho scoperto la funzione che posso utilizzare in base al suggerimento che mi hai dato: openssl_csr_get_subject ($ mydata) può generare la matrice di valori di cui ho bisogno. Grazie ancora. – mnnmountain

Problemi correlati