ssl - 使用 PHP 为 PayPal 生成 .pem 证书

标签 ssl paypal certificate pem

我需要一些帮助来解决以下问题。

一个多用户电子商务应用程序使用 .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/

相关文章:

泰国 REST API 直销信用卡

system - 签署Android系统应用程序(研究项目)

.htaccess - 2-redirect HSTS 而不是 1-redirect HSTS 的优势是什么

java - 如何在 C# 或 Java 中的握手期间读取 ocsp 装订响应

c++ - BIO_do_connect() 似乎失败是因为使用了 SSL v3,有没有办法获得更多诊断信息?

ruby-on-rails - 在 Rails 应用程序中集成 Paypal 登录不起作用

c++ - 静态链接 SSL 与 Poco

node.js - 如何使用 Node 检索 PayPal REST Api 访问 token

powershell - 如何在不提示输入密码的情况下读取 pfx 文件的指纹

ssl - 为什么我需要 SSL 证书?