1

私は次の公開鍵を持っています:

-----BEGIN RSA PUBLIC KEY-----
... key ...
-----END RSA PUBLIC KEY-----

PHP はその公開鍵では動作しません。PHPで使用できるようにするには、x509形式にする必要があることがわかりました。このキーを x509 形式に変換できますか? 私が理解しているように、結果は次のようになります。

-----BEGIN PUBLIC KEY-----
... changed? key ...
-----END PUBLIC KEY-----

UPD: 公開鍵だけでなく、x509 証明書を生成する必要がありました。

4

1 に答える 1

2

純粋な PHP RSA ライブラリである phpseclib は、その形式の RSA キーで問題なく動作します。

そうは言っても、openssl に関しては、あなたの言うとおりです。ほとんどの openssl_* 関数で動作するには、RSA 公開鍵を X.509 証明書にカプセル化する必要があります。

phpseclib相互運用性ドキュメントから:

// openssl_get_publickey() only creates public key resources from X.509
// certificates hence our creating one
$dn = array();  // use defaults
$res_privkey = openssl_pkey_get_private($privkey);
$res_csr = openssl_csr_new($dn, $res_privkey);
$res_cert = openssl_csr_sign($res_csr, null, $res_privkey, 365);
openssl_x509_export($res_cert, $str_cert);
$res_pubkey = openssl_get_publickey($str_cert);

つまり、結果は投稿したものではなく、次のようになるはずです。

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
于 2013-12-12T21:00:13.553 に答える