使用 php 生成证书签名请求时证书和私钥不匹配
Certificate and private key do not match when using php to generate certificate signing request
我遇到的问题是 CA(在本例中为 Microsoft AD 认证服务)颁发的证书与用于在 PHP 中创建证书请求的私钥不匹配,我有不知道,怎么会这样。
这是我的代码:
<?php
$dn = array(
"countryName" => "NL",
"stateOrProvinceName" => "state",
"localityName" => "City",
"organizationName" => "Company",
"organizationalUnitName" => "Unit",
"commonName" => exec("hostname").'.'.exec("hostname -d"),
"emailAddress" => "mail@example.com"
);
$res_privkey = openssl_pkey_new();
openssl_pkey_export_to_file($res_privkey, '/var/www/html/privkey.pem');
$res_csr = openssl_csr_new($dn, $res_privkey);
openssl_csr_export_to_file($res_csr, '/var/www/html/csr.pem');
?>
然后我使用 csr.pem
作为签名请求并从我的 CA 获得一个 base64 编码的证书 certnew.cer
。但是当我在我的 apache 配置中使用私钥 privkey.pem
和证书 certnew.cer
时,我收到了 apache 错误消息
AH02565:来自...和...的证书和私钥 127.0.0.1:443:0 不匹配
有什么想法吗?
不是问题的真正解决方案,但至少是 work-around:我更改了 php 以调用完美完成工作的 bash 脚本:
<?php
$key = "/var/www/html/privkey.pem";
$csr = "/var/www/html/csr.pem";
$subj = "/C=NL/ST=state/L=City/O=Company/OU=Unit/CN=".exec("hostname").'.'.exec("hostname -d")."/emailAddress=mail@example.com";
exec("sudo ./create_csr.sh $key $csr $subj");
?>
这里是 bash 脚本:
#!/bin/bash
key=
csr=
subj=
openssl req -new -key $key -out $csr -subj $subj
我遇到的问题是 CA(在本例中为 Microsoft AD 认证服务)颁发的证书与用于在 PHP 中创建证书请求的私钥不匹配,我有不知道,怎么会这样。
这是我的代码:
<?php
$dn = array(
"countryName" => "NL",
"stateOrProvinceName" => "state",
"localityName" => "City",
"organizationName" => "Company",
"organizationalUnitName" => "Unit",
"commonName" => exec("hostname").'.'.exec("hostname -d"),
"emailAddress" => "mail@example.com"
);
$res_privkey = openssl_pkey_new();
openssl_pkey_export_to_file($res_privkey, '/var/www/html/privkey.pem');
$res_csr = openssl_csr_new($dn, $res_privkey);
openssl_csr_export_to_file($res_csr, '/var/www/html/csr.pem');
?>
然后我使用 csr.pem
作为签名请求并从我的 CA 获得一个 base64 编码的证书 certnew.cer
。但是当我在我的 apache 配置中使用私钥 privkey.pem
和证书 certnew.cer
时,我收到了 apache 错误消息
AH02565:来自...和...的证书和私钥 127.0.0.1:443:0 不匹配
有什么想法吗?
不是问题的真正解决方案,但至少是 work-around:我更改了 php 以调用完美完成工作的 bash 脚本:
<?php
$key = "/var/www/html/privkey.pem";
$csr = "/var/www/html/csr.pem";
$subj = "/C=NL/ST=state/L=City/O=Company/OU=Unit/CN=".exec("hostname").'.'.exec("hostname -d")."/emailAddress=mail@example.com";
exec("sudo ./create_csr.sh $key $csr $subj");
?>
这里是 bash 脚本:
#!/bin/bash
key=
csr=
subj=
openssl req -new -key $key -out $csr -subj $subj