簡體   English   中英

使用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 不匹配

有任何想法嗎?

不是問題的真正解決方案,但至少是一種解決方法:我更改了我的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM