Почему я не могу получить открытый ключ из сертификата X509 в PHP? - PullRequest
1 голос
/ 07 марта 2012

Следующий код PHP выводит это предупреждение:

Предупреждение: openssl_csr_get_public_key (): предоставленный ресурс не является допустимым CSR-ресурсом OpenSSL X.509 в /home/swissbtc/www/bitcoins.ch/index.php строке 49

Код:

$Configs = array(       
        '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
);

//generate cert
$dn        = array('commonName' => 'test');
$privkey   = openssl_pkey_new($Configs);
$csr       = openssl_csr_new($dn, $privkey, $Configs);
$cert      = openssl_csr_sign($csr, null, $privkey, 365, $Configs);

//try to get public key
$publicKey = openssl_csr_get_public_key($cert);  //line 49

//try again to get the public key
openssl_x509_export($cert, $certout);
$publicKey = openssl_csr_get_public_key($certout);

Примечание: Первый $ publicKey (строка 49) пуст, а второй $ publicKey (строка 53) получает логическое значение "false"

Что не так с моим кодом?

1 Ответ

2 голосов
/ 08 марта 2012

Это работает для меня:

$Configs = array(       
    '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
);

//generate cert
$dn        = array('commonName' => 'test');
$privkey   = openssl_pkey_new($Configs);
$csr       = openssl_csr_new($dn, $privkey, $Configs);
$cert      = openssl_csr_sign($csr, null, $privkey, 365, $Configs);
$publicKey = openssl_pkey_get_public($cert);

var_dump($publicKey);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...