首先开启openssl.cafile参数

vi /etc/php.ini

配置如下:

openssl.cafile=/var/www/html/ssl/cert.pem

设置完毕后可以使用openssl_get_cert_locations()来检测

<?php
print_r(openssl_get_cert_locations());
?>

或者命令行中执行

php -r "print_r(openssl_get_cert_locations());"

显示如下(我们只关注ini_cafile参数就行,其他的不用管)

Array (
 [default_cert_file] => /etc/pki/tls/cert.pem
 [default_cert_file_env] => SSL_CERT_FILE
 [default_cert_dir] => /etc/pki/tls/certs
 [default_cert_dir_env] => SSL_CERT_DIR
 [default_private_dir] => /etc/pki/tls/private
 [default_default_cert_area] => /etc/pki/tls
 [ini_cafile] => /var/www/html/ssl/cert.pem
 [ini_capath] =>
)

关注cert.pem文件可以在https://curl.haxx.se/ca/cacert.pem下载,不过我的是自己安装的邮箱服务器,所以我使用的是自己生成的证书,也就是邮件服务器上面postfix的配置文件/etc/postfix/main.cf里面的smtpd_tls_cert_file所对应的那个文件,完毕后重启服务再次执行发现可以了,说到这里我该说我在什么情况下遇到这个问题的了,那就是在我的discuz后台邮件服务设置测试那里遇见到的。

Last modification:November 24th, 2019 at 01:04 pm