我想在PHP 5.x中创建一个自签名证书.使用我自己的(替代)openssl配置,应该由我的PHP代码定义.PHP脚本将在不同的环境(共享托管Web服务器)上运行.
官方PHP手册说:
默认情况下,系统openssl.conf中的信息用于初始化请求; 您可以通过设置configargs的config_section_section键来指定配置文件部分.您还可以通过将config键的值设置为要使用的文件的路径来指定备用openssl配置文件.如果configargs中存在以下键,则表现为openssl.conf中的等效键,如下表所示.....
我的问题:我有必要明确指定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, $privkey, 365, $Configs);
Run Code Online (Sandbox Code Playgroud)
编辑:
在PHP手册的用户贡献说明中,为什么他们总是指定openssl.cnf的路径?例如:
$configargs = array(
'config' => '/etc/ssl/openssl.cnf',
'digest_alg' => 'md5',
'x509_extensions' => 'v3_ca',
'req_extensions' => 'v3_req',
'private_key_bits' => 666,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
'encrypt_key' => false, …Run Code Online (Sandbox Code Playgroud)