微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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必须包含的.

原文地址:https://www.jb51.cc/php/139567.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐