- 首页 >
- 问答 >
-
云计算 >
- Ubuntu Apache SSL配置步骤
Ubuntu Apache SSL配置步骤
小樊
38
2025-12-19 00:57:36
Ubuntu Apache SSL 配置步骤
一 准备与安装
- 更新系统并安装 Apache 与 SSL 模块:
- sudo apt update
- sudo apt install apache2 libapache2-mod-ssl
- 启用 SSL 模块:
- 防火墙放行端口(如使用 UFW):
- sudo ufw allow 80,443/tcp 或 sudo ufw allow ‘Apache Full’
- 说明:启用 SSL 模块后通常会自动放行 443 端口;若未放行,可检查 /etc/apache2/ports.conf 是否包含 Listen 443。
二 准备证书文件
- 方案 A 使用 CA 颁发的证书(生产环境推荐)
- 常见文件:域名证书 public.crt / domain.crt、私钥 domain.key、中间证书链 chain.crt / fullchain.pem。
- 建议将证书集中存放并修正权限:
- sudo mkdir -p /etc/apache2/ssl
- sudo cp YourDomainName_public.crt YourDomainName_chain.crt YourDomainName.key /etc/apache2/ssl
- sudo chmod 600 /etc/apache2/ssl/*.key
- 方案 B 自签名证书(仅测试)
- 生成自签名证书(有效期 365 天):
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048
-keyout /etc/ssl/private/apache-selfsigned.key
-out /etc/ssl/certs/apache-selfsigned.crt
- 提示:部分厂商将证书与链合并为 fullchain.pem,此时通常只需配置 SSLCertificateFile 与 SSLCertificateKeyFile。
三 配置 Apache 启用 HTTPS
- 编辑 SSL 虚拟主机配置(两种常见做法,二选一)
- 使用默认 SSL 站点:
- sudo nano /etc/apache2/sites-available/default-ssl.conf
- 在 <VirtualHost *:443> 中确保包含:
- ServerName your.domain
- SSLEngine on
- SSLCertificateFile /etc/apache2/ssl/YourDomainName_public.crt
- SSLCertificateKeyFile /etc/apache2/ssl/YourDomainName.key
- SSLCertificateChainFile /etc/apache2/ssl/YourDomainName_chain.crt
- 启用站点:
- sudo a2ensite default-ssl.conf
- 或自建站点配置(/etc/apache2/sites-available/example.com.conf):
- 在 <VirtualHost *:443> 中配置 DocumentRoot、ServerName、SSLEngine on 与上述证书路径
- 启用站点:
- sudo a2ensite example.com.conf
- 确保监听 443:
- 检查 /etc/apache2/ports.conf 包含:Listen 80 与 Listen 443
- 可选优化(在 mods-available/ssl.conf 或相应 VirtualHost 中设置)
- SSLProtocol all -SSLv2 -SSLv3
- SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:MEDIUM
- SSLHonorCipherOrder on
- SSLSessionCache shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
- SSLSessionCacheTimeout 300
- 使配置生效:
- sudo systemctl reload apache2 或 sudo systemctl restart apache2
四 强制 HTTP 跳转 HTTPS(可选)
- 启用重写模块:
- 在端口 80 的虚拟主机(如 000-default.conf)中添加:
- RewriteEngine on
- RewriteCond %{HTTPS} off
- RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [L,R=301]
- 或在 .htaccess(需 AllowOverride All):
- RewriteEngine on
- RewriteCond %{SERVER_PORT} !^443$
- RewriteRule ^.* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- 应用变更:
- sudo systemctl reload apache2
五 验证与排错
- 访问测试:
- 打开浏览器访问 https://your.domain,确认地址栏显示锁形图标;自签名证书会提示不受信任(仅测试环境可接受)。
- 证书路径核对:
- 确保证书、私钥、链文件路径与配置一致;私钥权限为 600。
- 端口与模块:
- 确认 443 端口已监听(ss -tlnp | grep :443),且 mod_ssl 已启用(a2enmod ssl)。
- 日志排查:
- 查看错误日志:tail -f /var/log/apache2/error.log
- 自动化方式(Let’s Encrypt):
- 安装 Certbot:sudo apt install certbot python3-certbot-apache
- 一键申请并配置:sudo certbot --apache(将自动修改虚拟主机并开启重定向)。