我需要一些帮助来解决以下问题。
一个多用户电子商务应用程序使用 .pem 格式的证书来加密 paypal 按钮,直到现在所有证书都是通过 Linux 控制台使用 openssl 命令生成的。
到目前为止一切正常,但如果客户端有很多用户,这不是一个实际的过程,我们希望用户可以从他们的管理面板生成他们的证书。
我找到了以下生成证书的脚本:
$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
这个脚本的输出为我生成了三个 block
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE REQUEST-----
-----END CERTIFICATE REQUEST-----
作为测试,我复制了整个 block ----- BEGIN CERTIFICATE ----- ----- END CERTIFICATE ----- 并将其粘贴到扩展名为 .crt 的文本文件中。
然后我将使用 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 函数没有太多经验,所以我求助于你,如果有人能给我一些关于这个问题的信息,我从现在开始感激不尽。
最佳答案
我已经测试运行您的代码并将结果发送到此验证页面 https://www.sslshopper.com/certificate-decoder.html
如果您只打印公钥并进行测试,似乎可以生成正确的证书。
虽然主要是由于编码,但似乎是 crt 和 cer 之间的 key 格式差异。 https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them
测试不同的编码或文件扩展名。
关于ssl - 使用 PHP 为 PayPal 生成 .pem 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27855388/