[英]SSL: match private key with certificate using PHP (without phpseclib)
[英]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 不匹配
有任何想法嗎?
不是問題的真正解決方案,但至少是一種解決方法:我更改了我的 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=$1
csr=$2
subj=$3
openssl req -new -key $key -out $csr -subj $subj
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.