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

前端之家收集整理的这篇文章主要介绍了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必须包含的.

猜你在找的PHP相关文章