简体   繁体   中英

PHP Openssl_pkey_get_private() result depends on openssl

Updated openssl and miracles started. Two versions of openssl give different result.

openssl OpenSSL support => enabled 
OpenSSL Library Version => OpenSSL **0.9.8y** 5 Feb 2013
OpenSSL Header Version => OpenSSL 0.9.8y 5 Feb 2013

openssl OpenSSL support enabled  
OpenSSL Library Version OpenSSL **1.0.1f** 6 Jan 2014  
OpenSSL Header Version OpenSSL 0.9.8y 5 Feb 2013

PHP code:

<?
$pkeyid = openssl_pkey_get_private("file:///certificate/bank_ee/private.key" , "dkcert");

openssl_pkey_export($pkeyid, $pkeyout);
var_dump($pkeyout);

from console (0.9.8y)

string(891) "-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQC3RTUIY+ACV0luhdub8BSLjeVGqKNxQ+5BwEFw1EsOSANo/2bJ
o8Wr1YO8u+cJ2vTw3dc2MHssRgIAmWeRNhjdtXj/dZv70KTXvvY1xV8asth7Cxni
I2dFzTbhc5FKkF6XvjsM83P3fjHyk0W5CvaUlqfo1I5Q/kZFf1bcXMMaCQIDAQAB
AoGBAKyXOkg6djz+IqM44AXMZCzAZkjSi4khJgE5ouc0pbI/UybQTuZZmtAl9TgJ
5Jw9XSpwYDoiEf0xuLUDwqrXvTWEetk+zPXCAZhJz+tlX1RsdJGq1Ubwj6odAham
dIYX2OwjBdrmw9MWPPNKzjQNXYUwptVAnn1nEFJFLp2wnuxZAkEA6h4zvcr7nJyN
erfE9m3/47vgpKrki3Iy+7C+GF5+auj86J5L7Pl3Rbj0WPjBha9axcrWRtpypQt2
ZG2IwZzGAwJBAMhmXHssXC7bxgz1uRWT2B647bnArAWM8z3qgIhKHVozKfIIpCMD
VzS26BQ3fEnQ02/Neg3djgnubI+4iy7JmAMCQQCqrIPp6+2MGbEmcow7Xqu6uP+m
7BKa+hDi3dFncJPWmq2tY6FUS/VAtfokVoy2ScTyBtI5aw1C9t1Dj3qwMvtDAkB6
KzT7/jogcujVI8P2rI/XguOiFxyHsbrkJx6+d3hXcdODctMlaTbzswHeuUiy83TC
tuBOrZ+W3Fwgbd+j4VAjAkEAiW5FWW4R9ixUgTrVXqOgdR+T8LNL4qMNu7x/EYkr
u1z8Pou6VhOG1+4BZaSVsoCouk3ZbG/9sK5GsHpZIoURDA==
-----END RSA PRIVATE KEY-----

From browser(1.0.1f)

string(916) "-----BEGIN PRIVATE KEY----- MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBALdFNQhj4AJXSW6F 25vwFIuN5Uaoo3FD7kHAQXDUSw5IA2j/ZsmjxavVg7y75wna9PDd1zYweyxGAgCZ Z5E2GN21eP91m/vQpNe+9jXFXxqy2HsLGeIjZ0XNNuFzkUqQXpe+Owzzc/d+MfKT RbkK9pSWp+jUjlD+RkV/VtxcwxoJAgMBAAECgYEArJc6SDp2PP4iozjgBcxkLMBm SNKLiSEmATmi5zSlsj9TJtBO5lma0CX1OAnknD1dKnBgOiIR/TG4tQPCqte9NYR6 2T7M9cIBmEnP62VfVGx0karVRvCPqh0CFqZ0hhfY7CMF2ubD0xY880rONA1dhTCm 1UCefWcQUkUunbCe7FkCQQDqHjO9yvucnI16t8T2bf/ju+CkquSLcjL7sL4YXn5q 6Pzonkvs+XdFuPRY+MGFr1rFytZG2nKlC3ZkbYjBnMYDAkEAyGZceyxcLtvGDPW5 FZPYHrjtucCsBYzzPeqAiEodWjMp8gikIwNXNLboFDd8SdDTb816Dd2OCe5sj7iL LsmYAwJBAKqsg+nr7YwZsSZyjDteq7q4/6bsEpr6EOLd0Wdwk9aara1joVRL9UC1 +iRWjLZJxPIG0jlrDUL23UOPerAy+0MCQHorNPv+OiBy6NUjw/asj9eC46IXHIex uuQnHr53eFdx04Ny0yVpNvOzAd65SLLzdMK24E6tn5bcXCBt36PhUCMCQQCJbkVZ bhH2LFSBOtVeo6B1H5Pws0viow27vH8RiSu7XPw+i7pWE4bX7gFlpJWygKi6Tdls b/2wrkawelkihREM -----END PRIVATE KEY----- "

Why? Same function, same parametrs, same server. How can it be?

The difference you're seeing is the consequence of the default RSA key format change between PKCS#1 used in the openssl version 0.9.8y and PKCS#8 in openssl version 1.0.1f.

You can use this command to convert the old format key (0.9.8) to the new format (1.0.1):

openssl pkcs8 -topk8 -in prkey.opensslv098y -nocrypt

Or vice versa from 1.0.1 to 0.9.8:

openssl rsa -in prkey.opensslv101f

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM