2013-12-12 73 views
0

我有以下的公共密钥:是否可以将rsa公钥转换为x509公钥?

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

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

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

UPD:确切地说,必须生成x509证书,而不仅仅是公钥。

回答

1

phpseclib, a pure PHP RSA library,可以使用该格式的RSA密钥就好了。

这就是说,关于openssl,你是对的 - RSA公钥需要封装在X.509证书中,以便与大多数openssl_ *函数一起工作。

phpseclib interoperability documentation

// 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----- 
+0

你是对的。我需要使用私钥生成x509证书,以便在php openssl_ *函数中使用它。 – avasin

+0

是否可以使用openssl命令行? –