【问题标题】:Generate SHA256 CSRs PHP Openssl生成 SHA256 CSR PHP Openssl
【发布时间】:2018-08-16 06:20:42
【问题描述】:

我也在尝试使用 PHP 开发某种 PKI 管理,并且我发现使用 PHP Openssl 的许多问题(部分到期文档)。

例如,我通过艰难的方式(尝试和错误)了解到 PHP openssl 并没有真正检查 OPENSSL_CONF 环境变量,使用不同配置文件的唯一真正方法是使用 $configArray('config ' => file_path) 参数。

目前我一直在尝试使用 SHA256 哈希方法生成 CSR。对于测试,我正在使用这个最小(但有效)的 openssl.conf 配置:

distinguished_name  = req_distinguished_name
[req]
default_md          = sha256
[req_distinguished_name]
[end_req_ext]
keyUsage                = digitalSignature,keyEncipherment
extendedKeyUsage        = serverAuth,clientAuth

(请注意,'default_md' 设置被 $configArray['digest_alg'] 参数覆盖。

我使用此代码进行测试:

$config = array(
    'digest_alg' => "sha256",
    'private_key_bits' => 384,
    'config'    => "/tmp/opensslmy.conf"
);

$dn = array(
    "countryName" => "UK",
    "stateOrProvinceName" => "Somerset",
    "localityName" => "Glastonbury",
    "organizationName" => "The Brain Room Limited",
    "organizationalUnitName" => "PHP Documentation Team",
    "commonName" => "Wez Furlong"
);

$key = openssl_pkey_new($config);
if (!$key) {
    print "Error on PKEY_NEW: ".openssl_error_string()."\n";
    exit(1);
}

$csr = openssl_csr_new ( $dn , $key, $config );
$pem = "";
if (openssl_csr_export($csr, $pem)) {
    print $pem."\n";
} else {
    print "Error on CSR_NEW: ".openssl_error_string()."\n";
}

失败了:

PHP Warning:  openssl_csr_new(): Error signing request in /home/mark/Desktop/ssltest.php on line 25
PHP Warning:  openssl_csr_export() expects parameter 1 to be resource, boolean given in /home/mark/Desktop/ssltest.php on line 27
Error on CSR_NEW: error:0E06D06C:configuration file routines:NCONF_get_string:no value

如果将初始 $config 数组 'digest_alg' 设置为 md5 或 sha1,它会像一个魅力一样工作,并使用给定的哈希算法成功生成一个 CSR。

我还尝试从配置数组中删除“digest_alg”键并在配置文件中专门指定它(根据我的经验,即使对于 openssl req -new 命令,-sha256 也不起作用,而且是生成 sha256 CSR 的唯一方法)

我目前使用的是 PHP 5.5.9 和 OpenSSL 1.0.1f。

我做错了什么? PHP 版本太旧?

【问题讨论】:

    标签: php openssl sha256


    【解决方案1】:

    问题不在于算法,而在于 private_key_bits 的大小。这将触发错误并导致 CSR 创建失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 2014-08-12
      • 2016-04-02
      • 1970-01-01
      相关资源
      最近更新 更多