Quando sto creando le stringhe chiave privata con il seguente codice PHP (e lo stesso config-parametro), essi sono racchiusi tra le diverse stringhe:Perché diverse stringhe di chiavi private sotto Linux o Windows?
$configs = array('config' => 'OpenSSL.cnf',
'digest_alg' => 'sha1',
'x509_extensions' => 'v3_ca',
'req_extensions' => 'v3_req',
'private_key_bits' => 2048,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
'encrypt_key' => false,
'encrypt_key_cipher' => OPENSSL_CIPHER_3DES);
$privateKeyResourceId = openssl_pkey_new($this->configs);
openssl_pkey_export($privateKeyResourceId, $privateKeyString);
Su Linux il $ privateKeyString assomiglia a questo:
----- BEGIN CHIAVE PRIVATA ----- NBgkqhkiG9w0BAQE .... ASDFasjkfa ----- END CHIAVE PRIVATA -----
Su Windows il $ privateKeyString assomiglia a questo:
----- BEGIN chiave privata RSA ----- NBgkqhkiG9E .... ASDFasjkfa ----- END RSA chiave privata -----
Quando copio Windows stringa di chiavi privata per Linux funziona finché non rimuovo 'RSA' dall'inizio/fine (stesso comportamento viceversa). Perchè è questo?
OpenSSL supporta più di un formato di chiave privata. L'identificatore dell'intestazione PEM in cui viene utilizzato il formato. Il primo è in un formato PKCS standard e include un identificatore che indica che si tratta di una chiave RSA. Il secondo è in un formato specifico RSA e quindi non ha bisogno di quell'identificatore. Il formato predefinito è cambiato tra PHP 5.2.9 e 5.3.3. –
Grazie per il commento. Ciò significherebbe che non è un problema del sistema operativo. Devo dare un'occhiata. – Mike
Non è sicuramente un problema del sistema operativo. È un problema di PHP. (Né è rotto, è solo che se il tuo codice si aspetta uno e ottiene l'altro, ...) –