温馨提示×

Apache Ubuntu如何配置SSL

小樊
33
2025-12-21 00:16:35
栏目: 云计算

Ubuntu 上 Apache 配置 SSL 的完整步骤

一 准备与前置检查

  • 准备:操作系统 Ubuntu,Web 服务器 Apache 2,已安装 OpenSSL,并准备好域名对应的证书文件(常见为:域名_public.crt/域名_chain.crt/域名.key,或 fullchain.pem + privkey.pem)。如尚未安装 Apache,可执行:sudo apt update && sudo apt install apache2。如使用防火墙,放行 80/443sudo ufw allow 80,443/tcp && sudo ufw enable。为自动续期 HTTPS,建议安装 Certbotsudo apt install certbot python3-certbot-apache

二 手动部署自有证书

  • 放置证书:创建目录并拷贝证书与私钥
    • sudo mkdir -p /etc/apache2/ssl
    • sudo cp YourDomainName_public.crt /etc/apache2/ssl/
    • sudo cp YourDomainName_chain.crt /etc/apache2/ssl/
    • sudo cp YourDomainName.key /etc/apache2/ssl/
  • 启用模块与端口:启用 SSL 模块,并确认 443 监听
    • sudo a2enmod ssl
    • 检查 /etc/apache2/ports.conf 是否包含 Listen 443(如未包含可手动添加)
  • 配置站点:编辑或创建 SSL 虚拟主机(示例为 /etc/apache2/sites-available/example.com-ssl.conf
    • 关键指令示例:
      • <VirtualHost *:443>
      • ServerName example.com
      • DocumentRoot /var/www/example.com/public_html
      • SSLEngine on
      • SSLCertificateFile /etc/apache2/ssl/YourDomainName_public.crt
      • SSLCertificateKeyFile /etc/apache2/ssl/YourDomainName.key
      • SSLCertificateChainFile /etc/apache2/ssl/YourDomainName_chain.crt
      • <Directory /var/www/example.com/public_html> ... Require all granted </Directory>
  • 启用站点与重载:
    • sudo a2ensite example.com-ssl.conf
    • sudo apache2ctl configtest && sudo systemctl reload apache2
  • 验证:浏览器访问 https://example.com,地址栏显示锁标识即正常。

三 使用 Let’s Encrypt 自动获取并配置

  • 安装与签发:
    • sudo apt install certbot python3-certbot-apache
    • sudo certbot --apache -d example.com -d www.example.com
    • 按提示选择是否重定向 HTTP→HTTPS,Certbot 会自动修改虚拟主机并部署证书
  • 自动续期验证:
    • sudo certbot renew --dry-run
  • 说明:Certbot 会自动创建或调整 sites-available 中的配置,启用 HTTPS 并尽量完成 80→443 的重定向设置。

四 常见问题与优化

  • 端口未放行:若访问 https:// 失败,确认云安全组/本机防火墙已放行 443,以及 /etc/apache2/ports.conf 包含 Listen 443
  • 证书链不完整:部分浏览器报“证书不受信任”,请确保配置 SSLCertificateChainFile(或合并为 fullchain)以包含中间证书。
  • 配置语法与生效:每次修改后执行 sudo apache2ctl configtest,无误再 sudo systemctl reload apache2
  • 仅测试环境可用自签名证书:
    • 生成:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
    • 配置到虚拟主机后启用并重载;生产环境请使用受信任 CA 签发证书。

0