温馨提示×

ubuntu php如何开ssl

小樊
45
2026-10-21 21:57:25
栏目: 云计算

在 Ubuntu 上给 PHP 开启 SSL,通常分两种场景:


一、PHP 作为 Web 服务端(通过 Apache / Nginx + SSL)

1️⃣ 使用 Apache + PHP + SSL

安装

sudo apt update
sudo apt install apache2 php libapache2-mod-php

启用 SSL 模块

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

2️⃣ 使用 Nginx + PHP-FPM + SSL

sudo apt install nginx php-fpm

Nginx SSL 配置示例

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

二、PHP 访问 HTTPS(curl / file_get_contents SSL)

1️⃣ 安装 CA 证书(重要)

sudo apt install ca-certificates
sudo update-ca-certificates

2️⃣ 检查 PHP 扩展

php -m | grep openssl

如果没有:

sudo apt install php-openssl
sudo systemctl restart apache2   # 或 nginx / php-fpm

3️⃣ PHP curl 示例(HTTPS)

$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

  • 没装 openssl
  • 没装 ca-certificates

✅ curl: SSL certificate problem

  • 系统时间错误
  • 证书路径不对

如果你能说明:

  • 用的是 Apache 还是 Nginx
  • 是 网站 HTTPS 还是 PHP 请求 HTTPS

我可以给你更精确的配置。

0 踩