Small error in this code:
$pub_key = openssl_pkey_get_public(file_get_contents('./cert.crt'));
$keyData = openssl_pkey_get_details($pub_key);
file_put_contents('./key.pub', $keyData['key']);
openssl_pkey_get_public
(PHP 4 >= 4.2.0, PHP 5)
openssl_pkey_get_public — 証明書から公開鍵を抽出し、使用できるようにする
説明
openssl_get_publickey() は公開鍵を certificate から抽出し、 他の関数で使用できるよう準備します。
パラメータ
- certificate
-
certificate は以下のいずれかです。
- an X.509 証明書リソース
- file://path/to/file.pem 形式の文字列。 このファイルは、PEM エンコードされた証明書/秘密鍵である必要が あります(両方を含むことも可能です)。
- PEM フォーマットの秘密鍵。
返り値
成功した場合に正のキーリソース ID、エラー時に FALSE を返します。
openssl_pkey_get_public
VaD
07-Jun-2008 02:36
07-Jun-2008 02:36
08-May-2007 04:40
you can get (and save to file) public key using openssl_pkey_get_details(resource $key ) function:
<?php
$pub_key = openssl_pkey_get_public(file_get_contents('./cert.crt'));
$keyData = openssl_pkey_get_details($pub_key);
fule_put_contents('./key.pub', $keyData['key']);
?>
dankybastard at hotmail
10-Feb-2005 01:52
10-Feb-2005 01:52
You must also use the string representation of the certificate to get the public key resource:
$dn = array(); // use defaults
$res_privkey = openssl_pkey_new();
$res_csr = openssl_csr_new($dn, $res_privkey);
$res_cert = openssl_csr_sign($res_csr, null, $res_privkey, $ndays);
openssl_x509_export($res_cert, $str_cert);
$res_pubkey = openssl_pkey_get_public($str_cert);
10-Aug-2004 03:44
This documentation notes it can take a PEM-formatted private key, but as per bug #25614, this is not possible in any form. The function simply returns a FALSE.
The only thing you can get public keys out of are X.509 certificates.
Furthermore, there is NO way to export a public key into a PEM-encoded form.
