2012-03-07 17 views
2

次のPHPコードは、この警告をプリントアウト:PHPでX509証明書から公開鍵を取得できないのはなぜですか?

警告:openssl_csr_get_public_key():供給リソースは/home/swissbtc/www/bitcoins.ch/index.phpに有効なOpenSSLのX.509 CSRリソースではありませんライン上の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); 

注:最初の$公開(ライン49)は、EMでありますptyと2番目の$ publicKey(53行目)はブール値「false」を取得します

私のコードには何が問題なのですか?

+0

それはあなたのキーファイルの内容によって異なります。どのように生成するのですか/どこから取得しますか? – Raptor

+1

キーと証明書は、どちらも上記のコードで生成されています。 – Roland

答えて

2

これが私の作品:

$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); 
+0

$ publicKeyをエクスポートするためにCSR(Certificate Signing Request)を使用しているようです。私は「本当の」x509証明書から輸出したいと思っています。 – Roland

+1

私は答えを更新しました – Martin

+0

、ありがとう、完璧な作品! – Roland

関連する問題