【发布时间】:2016-03-23 05:58:22
【问题描述】:
我目前正在使用以下代码为其他域生成带有subjectAltName 的 CSR。
$domains = ["example.com", "www.example.com"];
$san = implode(",", array_map(function ($dns) {
return "DNS:" . $dns;
}, $domains));
$csr = openssl_csr_new([
"CN" => reset($domains),
"ST" => "Germany",
"C" => "DE",
"O" => "Unknown",
"subjectAltName" => $san,
], $privateKey, [
"digest_alg" => "sha256",
"req_extensions" => "v3_req",
]);
但是当我使用openssl req -text -noout -verify -in csr.pem 来验证生成的CSR 时,subjectAltName 没有在Requested Extensions 部分下列出。而是将subjectAltName 添加到主题中。
subjectAltName 在第一个数组中被识别,其他任意值会导致错误。但是如何使用 OpenSSL 在 PHP 中创建一个真正包含 subjectAltName 作为请求扩展的 CSR?
这个问题专门针对捆绑的 openssl_* 函数,而不是像 phpseclib 这样的任何第三方库。
【问题讨论】:
-
@jww:“在 PHP 中生成 SAN CSR”是这里唯一的重复项。这里的答案比那里的答案要好得多。