使用PHP为PayPal生成.pem证书

时间:2015-01-09 06:58:20

标签: ssl paypal certificate pem

我需要一些关于以下问题的帮助。

多用户电子商务应用程序使用.pem格式证书来加密paypal按钮,到目前为止所有证书都是使用带有openssl命令的Linux控制台生成的。

到目前为止一切正常,但如果客户有很多用户,我们希望用户可以从他们的管理面板生成证书,但这不是一个实际的过程。

我找到了以下脚本来生成证书:


$dn = array("countryName" => 'GB', "stateOrProvinceName" => 'State', "localityName" => 'SomewhereCity', "organizationName" => 'MySelf', "organizationalUnitName" => 'Whatever', "commonName" => 'mySelf', "emailAddress" => 'user@domain.com');
$privkeypass = '1234';
$numberofdays = 365;

$privkey = openssl_pkey_new();
$csr = openssl_csr_new($dn, $privkey);
$sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays);
openssl_x509_export($sscert, $publickey);
openssl_pkey_export($privkey, $privatekey, $privkeypass);
openssl_csr_export($csr, $csrStr);

echo $privatekey; // Will hold the exported PriKey
echo $publickey; // Will hold the exported PubKey
echo $csrStr; // Will hold the exported Certificate

此脚本的输出生成了三个块

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE REQUEST-----
-----END CERTIFICATE REQUEST-----

作为测试,我复制整个块----- BEGIN CERTIFICATE ----- ----- END CERTIFICATE -----并将其粘贴在扩展名为.crt的文本文件中。< / p>

然后我会使用paypal帐户并尝试上传证书,但PayPal告诉我该文件不是.pem格式

The certificate you are trying to upload is not in the proper format. The certificate must be in .pem format.

其实我对PHP的ssl功能没有多少经验,所以我转向你,如果有人能就这个问题给我一些启示,我从现在开始欣赏它。

1 个答案:

答案 0 :(得分:0)

我已经测试了运行您的代码并将结果发送到此验证页面 https://www.sslshopper.com/certificate-decoder.html

如果您只打印公钥并对其进行测试,则似乎生成正确的证书。

主要由于编码,似乎是密钥的crt和cer之间格式的差异。 https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them

测试不同的编码或文件扩展名。