HTTPS / SSL 证书
为 Mix Space 配置 HTTPS 证书
Mix Space 的后台管理、OAuth 登录等功能要求使用 HTTPS。现代浏览器也会标记 HTTP 站点为不安全,影响访问体验。本页介绍几种常见的 SSL 证书获取和配置方式。
获取证书
自动证书(Let's Encrypt + Certbot)
Let's Encrypt 提供免费、自动化的 SSL 证书,有效期 90 天,支持自动续期。
使用服务器面板(推荐):
大部分服务器面板(1Panel、宝塔)都内置了自动证书申请功能,推荐在面板中一键申请并开启自动续期。
使用 Certbot 命令行:
# 安装 Certbot
apt install certbot python3-certbot-nginx # Debian/Ubuntu
yum install certbot python3-certbot-nginx # CentOS
# 申请证书(Nginx 插件自动配置)
certbot --nginx -d example.com -d www.example.com
# 测试自动续期
certbot renew --dry-runCertbot 会自动修改 Nginx 配置并设置定时任务续期。
Cloudflare Origin Certificates
如果你使用 Cloudflare CDN,可以申请 Cloudflare Origin Certificates:
- 有效期最长 15 年
- 仅用于 Cloudflare 回源到服务器的加密
- 访客看到的是 Cloudflare 的 Edge 证书
操作步骤:
- 登录 Cloudflare 后台,进入
SSL/TLS → 源服务器 - 点击「创建证书」,选择 RSA,有效期 15 年
- 下载 PEM(证书)和 Key(私钥)文件
- 在 Nginx 中配置这两个文件
使用 Cloudflare Origin Certificates 时,Cloudflare 的 SSL/TLS 加密模式应设为「完全(严格)」,以确保端到端加密。
手动上传证书
如果你已从其他 CA(如 DigiCert、Sectigo)购买或申请了证书,将证书文件和私钥上传到服务器,然后在 Nginx 中指定路径即可。
Nginx SSL 配置
基础配置
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/certs/fullchain.pem;
ssl_certificate_key /etc/ssl/private/privkey.pem;
}推荐的安全配置
server {
listen 443 ssl http2;
server_name example.com;
# 证书路径
ssl_certificate /etc/ssl/certs/fullchain.pem;
ssl_certificate_key /etc/ssl/private/privkey.pem;
# 仅使用 TLS 1.2 和 1.3
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# 会话缓存
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# HSTS(可选,启用后浏览器强制 HTTPS)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# HTTP 自动跳转
error_page 497 https://$host$request_uri;
}
# HTTP 跳转 HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}安全响应头(可选)
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;常见问题
证书续期后未生效
Certbot 续期证书后需要重载 Nginx:
nginx -s reloadCertbot 的 deploy-hook 可以自动执行此操作。
浏览器提示证书不匹配
- 确认证书覆盖了所有访问域名(包括
www子域名) - 检查证书是否过期
- 如果使用 Cloudflare,确认 SSL 模式不是「灵活」(灵活模式会导致重定向循环)
混合内容警告
确保前端页面中所有资源(图片、脚本、样式表)都使用 HTTPS 地址。检查 HTML 中是否有硬编码的 http:// 链接。