1

我有以下公钥:

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

PHP 无法使用该公钥。我发现它应该是 x509 格式才能在 php 中使用。是否可以将此密钥转换为 x509 格式?据我了解,结果应如下所示:

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

UPD:确实有必要生成 x509 证书,而不仅仅是公钥。

4

1 回答 1

2

phpseclib 是一个纯 PHP RSA 库,可以很好地使用该格式的 RSA 密钥。

也就是说,关于 openssl,您是对的 - RSA 公钥需要封装在 X.509 证书中才能与大多数 openssl_* 函数一起使用。

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 回答