在 Ubuntu 上给 PHP 开启 SSL,通常分两种场景:
sudo apt update
sudo apt install apache2 php libapache2-mod-php
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl restart apache2
/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key
sudo cp your.crt /etc/ssl/certs/
sudo cp your.key /etc/ssl/private/
编辑:
sudo nano /etc/apache2/sites-available/default-ssl.conf
修改:
SSLCertificateFile /etc/ssl/certs/your.crt
SSLCertificateKeyFile /etc/ssl/private/your.key
sudo systemctl restart apache2
sudo apt install nginx php-fpm
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/your.crt;
ssl_certificate_key /etc/ssl/private/your.key;
root /var/www/html;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
sudo nginx -t
sudo systemctl restart nginx
sudo apt install ca-certificates
sudo update-ca-certificates
php -m | grep openssl
如果没有:
sudo apt install php-openssl
sudo systemctl restart apache2 # 或 nginx / php-fpm
$ch = curl_init("https://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
$res = curl_exec($ch);
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/ssl/private/selfsigned.key \
-out /etc/ssl/certs/selfsigned.crt
✅ PHP 不识别 https
opensslca-certificates✅ curl: SSL certificate problem
如果你能说明:
我可以给你更精确的配置。