我想在
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中定义.
原文链接:https://www.f2er.com/php/139567.html如果没有指定备用openssl配置文件,它将自动使用默认的openssl.cnf.
建议:由于您的脚本将在不同的服务器上运行,所以您应该始终使用自己的openssl.cnf.
只需创建一个简单的文本文件,并在其中放入以下4行.然后将路径传递给您正在使用的OpenSSL功能(请看上面的第二个示例).
distinguished_name = req_distinguished_name [req_distinguished_name] [v3_req] [v3_ca]
看来这4行是最小的openssl.cnf必须包含的.