2013-12-12 111 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命令行? –