php – OpenSSL是否真的需要openssl.conf的路径?

我想在 PHP 5.x中创建一个自签名证书.与我自己的(替代)openssl配置应该由我的PHP代码定义. PHP脚本将在不同的环境(共享托管Web服务器)上运行.

官方PHP Manual说:

By default,the information in your system openssl.conf is used to initialize the request; you can specify a configuration file section by setting the config_section_section key of configargs. You can also specify an alternative openssl configuration file by setting the value of the config key to the path of the file you want to use. The following keys,if present in configargs behave as their equivalents in the openssl.conf,as listed in the table below…..

我的问题:是否有一个原因我必须明确指定openssl.conf的路径,因为它似乎工作正常没有它:

$Configs = array(       
    'digest_alg' => 'sha1','x509_extensions' => 'v3_ca','req_extensions' => 'v3_req','private_key_bits' => 1024,'private_key_type' => OPENSSL_KEYTYPE_RSA,'encrypt_key' => true,'encrypt_key_cipher' => OPENSSL_CIPHER_3DES
);

$privkey = openssl_pkey_new();
$csr = openssl_csr_new($dn,$privkey,$Configs);
$sscert = openssl_csr_sign($csr,null,365,$Configs);

编辑:

用户PHP Manual上提供了笔记,为什么总是指定openssl.cnf的路径?例如:

$configargs = array(
    'config' => '/etc/ssl/openssl.cnf','digest_alg' => 'md5','req_extensions'   => 'v3_req','private_key_bits' => 666,'encrypt_key' => false,);
OpenSSL中有许多配置设置,不能通过$configargs(您传递给OpenSSL函数PHP参数)在PHP中定义.

如果没有指定备用openssl配置文件,它将自动使用认的openssl.cnf.

建议:由于您的脚本将在不同的服务器上运行,所以您应该始终使用自己的openssl.cnf.

只需创建一个简单的文本文件,并在其中放入以下4行.然后将路径传递给您正在使用的OpenSSL功能(请看上面的第二个示例).

distinguished_name  = req_distinguished_name
[req_distinguished_name]
[v3_req]
[v3_ca]

看来这4行是最小的openssl.cnf必须包含的.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...