gpt4 book ai didi

php - 使用 PHP 和 OpenSSL 将 P12 转换为 PEM

转载 作者:可可西里 更新时间:2023-11-01 13:06:40 37 4
gpt4 key购买 nike

我正在尝试将一些 .p12 文件转换为 .pem。

在我的 mac 上它可以工作,没有交互,因为我把密码放在代码中,但是当我使用这个代码时:

system('openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12 -passin pass:');
system('openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12 -passout pass:1234 -passin pass:');
system('openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem -passin pass:1234');
system('cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem');

它生成空白文件。

我的文件权限是 755。对于 passin,密码被设置为空,所以这就是为什么它们是空白的......这里所有没有 system() 的代码都可以在 mac 终端上工作..

感谢阅读。希望你能帮忙

最佳答案

$filename = 'apns-dev-cert.p12';
$password = '...';
$results = array();
$worked = openssl_pkcs12_read(file_get_contents($filename), $results, $password));
if($worked) {
echo '<pre>', print_r($results, true), '</pre>';
} else {
echo openssl_error_string();
}

请尝试运行此代码段。将 $password 设置为打开文件所需的任何密码。如果没有密码,请将其设置为空。我认为您的 openssl 命令不需要一个。

应该获得带有所需私钥的输出,可能在 $results['pkey'] 中。

如果您在那里看到您的私钥,那么您可以将它传递给 openssl_pkey_export以 PEM 格式获取它,然后您可以将其写入文件:

$new_password = null;
$result = null;
$worked = openssl_pkey_export($results['pkey'], $result, $new_password);
if($worked) {
echo "<pre>It worked! Your new pkey is:\n", $result, '</pre>';
} else {
echo openssl_error_string();
}

如果需要,将 $new_password 设置为您想要的 pkey 密码。

根据我在各种文档页面上阅读的内容,这应该适合您。


如果您真的想通过脱壳继续使用openssl命令,请考虑使用proc_open而不是 system,以便您可以正确捕获错误消息。

也有可能 OpenSSL 正在尝试读取配置文件,但没有这样做的权限,尽管它应该给您一个错误。

关于php - 使用 PHP 和 OpenSSL 将 P12 转换为 PEM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422205/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com