温馨提示×

ubuntu apache2如何配ssl

小樊
39
2026-10-16 20:08:53
栏目: 云计算

在 Ubuntu 上给 Apache2 配置 SSL(HTTPS) 通常有以下几种方式。下面从最常用、最推荐的方法讲起。


一、使用 Let’s Encrypt 免费证书(推荐)

1. 安装 Certbot

sudo apt update
sudo apt install certbot python3-certbot-apache -y

2. 申请并自动配置 SSL

sudo certbot --apache

按提示操作:

  • 输入邮箱
  • 同意协议
  • 选择域名
  • 选择是否强制 HTTPS(推荐选 2)

✅ Certbot 会自动:

  • 申请证书
  • 修改 Apache 虚拟主机
  • 配置 80 → 443 跳转

3. 验证

浏览器访问:

https://yourdomain.com

4. 自动续期

sudo certbot renew --dry-run

(系统已通过 systemd timer 自动续期)


二、使用自签名证书(测试用)

1. 生成证书

sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/ssl/private/apache-selfsigned.key \
  -out /etc/ssl/certs/apache-selfsigned.crt

2. 启用 SSL 模块

sudo a2enmod ssl
sudo systemctl restart apache2

3. 配置虚拟主机

sudo nano /etc/apache2/sites-available/default-ssl.conf

修改关键内容:

SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

4. 启用站点

sudo a2ensite default-ssl
sudo systemctl restart apache2

访问:

https://服务器IP

⚠️ 浏览器会提示“不安全”(正常现象)


三、手动配置已有证书(商用证书)

1. 放置证书

/etc/ssl/certs/yourdomain.crt
/etc/ssl/private/yourdomain.key

2. 修改虚拟主机

<VirtualHost *:443>
    ServerName yourdomain.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/yourdomain.crt
    SSLCertificateKeyFile /etc/ssl/private/yourdomain.key
</VirtualHost>

3. 启用并重载

sudo a2enmod ssl
sudo a2ensite yourdomain.conf
sudo systemctl reload apache2

四、常见问题

❌ 443 无法访问

sudo ufw allow 443/tcp

❌ 证书不生效

sudo apache2ctl configtest
sudo systemctl status apache2

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • Apache 是否已安装
  • 域名 or 仅 IP
  • 是否用 Docker

我可以直接给你一份完整配置示例。

0 踩