2026年VPS SSL证书安装完全指南:10个关键步骤确保HTTPS安全
引言
在2026年,HTTPS已成为网站的标准配置,不仅关乎用户数据安全,也直接影响搜索引擎排名和用户信任度。本文将系统性地介绍在VPS服务器上安装和配置SSL证书的完整流程,涵盖从证书选择到高级安全配置的全过程。
SSL证书类型选择
证书类型对比
| 证书类型 | 验证级别 | 信任度 | 价格 | 适用场景 |
|---|---|---|---|---|
| DV(域名验证) | 低 | 中 | 免费-$50/年 | 个人博客、测试环境 |
| OV(组织验证) | 中 | 高 | $50-$200/年 | 企业官网、应用 |
| EV(扩展验证) | 高 | 极高 | $200-$500/年 | 金融、电商 |
| 通配符证书 | 取决于类型 | 中-高 | $100-$500/年 | 多子域名场景 |
| 多域名证书(SAN) | 取决于类型 | 中-高 | $100-$300/年 | 多个不同域名 |
2026年推荐证书方案
- 个人和小型项目 - Let's Encrypt(免费、自动化)
- 企业官网 - DigiCert、Sectigo的OV证书
- 电商/金融 - DigiCert、GlobalSign的EV证书
- 多子域名 - Let's Encrypt通配符或商业通配符证书
使用Let's Encrypt免费证书
安装Certbot
Certbot是Let's Encrypt官方推荐的证书管理工具:
# Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
# CentOS/RHEL
sudo dnf install epel-release -y
sudo dnf install certbot python3-certbot-nginx -y
# 验证安装
certbot --version
为Nginx配置证书
# 自动配置Nginx(推荐)
sudo certbot --nginx -d example.com -d www.example.com
# 手动获取证书(不修改Nginx配置)
sudo certbot certonly --nginx -d example.com -d www.example.com
交互式配置说明:
1. 输入邮箱地址(用于紧急通知)
2. 同意服务条款
3. 选择是否重定向HTTP到HTTPS
4. 等待验证完成
证书文件位置
# Let's Encrypt证书默认保存位置
/etc/letsencrypt/live/example.com/
├── cert.pem # 服务器证书
├── chain.pem # 中间证书
├── fullchain.pem # 完整证书链
└── privkey.pem # 私钥
# 权限设置(重要!)
sudo chmod 600 /etc/letsencrypt/live/example.com/privkey.pem
sudo chown root:root /etc/letsencrypt/live/example.com/privkey.pem
手动配置Nginx SSL
基础SSL配置
server {
listen 443 ssl http2;
server_name example.com www.example.com;
# 证书配置
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# SSL安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:
ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512';
# SSL会话缓存
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
# 根目录配置
root /var/www/html;
index index.html index.php;
# ...
}
# HTTP重定向到HTTPS
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
使用Mozilla SSL配置生成器
访问 Mozilla SSL Configuration Generator 生成适合您环境的配置。
Apache SSL配置
启用SSL模块
# Ubuntu/Debian
sudo a2enmod ssl
sudo systemctl restart apache2
# CentOS/RHEL
sudo yum install mod_ssl -y
sudo systemctl restart httpd
配置虚拟主机
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html
# SSL配置
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
# SSL安全配置
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5
SSLHonorCipherOrder on
# 其他配置
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# HTTP重定向
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
自动续期配置
测试自动续期
Let's Encrypt证书有效期为90天,需要设置自动续期:
# 测试续期过程(不实际续期)
sudo certbot renew --dry-run
# 查看续期定时任务
sudo systemctl status certbot.timer
配置自动续期
# 编辑crontab
sudo crontab -e
# 添加以下行(每天两次检查,只在需要时续期)
0 */12 * * * /usr/bin/certbot renew --quiet
# 或使用systemd timer(推荐)
sudo systemctl enable certbot.timer
sudo systemctl start certbot.timer
注意事项: 确保Nginx/Apache在续期后能自动重载配置:
# 编辑Certbot配置
sudo nano /etc/letsencrypt/renewal/example.com.conf
# 添加renew_hook(续期后执行)
renew_hook = systemctl reload nginx
安装商业SSL证书
生成CSR(证书签名请求)
# 使用OpenSSL生成CSR和私钥
openssl req -new -newkey rsa:4096 -nodes \
-keyout example.com.key -out example.com.csr
# 按照提示输入:
# Country Name (2 letter code): CN
# State or Province Name: Beijing
# City or Locality Name: Beijing
# Organization Name: Your Company Ltd.
# Organizational Unit Name: IT Department
# Common Name: example.com
# Email Address: admin@example.com
# Challenge password: (留空)
# Optional company name: (留空)
# 查看生成的CSR
cat example.com.csr
提交CSR并获取证书
- 将CSR内容提交给证书颁发机构(CA)
- CA验证域名/组织信息
- 通过邮件或DNS验证
- 下载颁发的证书文件
安装商业证书
# Nginx配置
server {
listen 443 ssl http2;
server_name example.com;
# 商业证书配置
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
# 如果有中间证书,需要合并
# cat example.com.crt intermediate.crt > bundle.crt
# ssl_certificate /etc/nginx/ssl/bundle.crt;
# ... 其他配置
}
SSL安全优化
启用HSTS(HTTP严格传输安全)
# 在Nginx配置中添加
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
注意事项: 启用HSTS前确保网站长期支持HTTPS,否则可能导致用户无法访问。
配置OCSP Stapling
OCSP Stapling能提升SSL握手性能并保护用户隐私:
# Nginx配置
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
# DNS解析器(用于OCSP查询)
resolver 8.8.8.8 1.1.1.1 valid=300s;
resolver_timeout 5s;
禁用不安全的协议和加密套件
# 仅启用TLS 1.2和1.3
ssl_protocols TLSv1.2 TLSv1.3;
# 禁用不安全的加密套件
ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:
ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers off; # TLS 1.3不需要优先服务器加密套件
多域名和通配符证书
使用Let's Encrypt通配符证书
# 需要DNS验证(不能使用HTTP验证)
sudo certbot -d *.example.com --manual --preferred-challenges dns certonly
# 按照提示添加DNS TXT记录
# 验证通过后,证书会保存在:
# /etc/letsencrypt/live/example.com/
# 在Nginx中使用
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
使用DNS插件自动验证
# 安装Cloudflare插件(如果使用Cloudflare DNS)
sudo apt install python3-certbot-dns-cloudflare -y
# 配置Cloudflare API Token
echo "dns_cloudflare_api_token = YOUR_API_TOKEN" > /root/.secrets/certbot/cloudflare.ini
chmod 600 /root/.secrets/certbot/cloudflare.ini
# 获取通配符证书
sudo certbot -d *.example.com -d example.com \
--dns-cloudflare \
--dns-cloudflare-credentials /root/.secrets/certbot/cloudflare.ini \
certonly
测试和验证
使用在线工具测试
- SSL Labs测试 - https://www.ssllabs.com/ssltest/
- 检查证书链、协议支持、加密套件
-
目标:获得A+评级
-
Why No Padlock? - https://www.whynopadlock.com/
-
检查混合内容问题
-
SSL Shopper检查 - https://www.sslshopper.com/ssl-checker.html
- 验证证书安装是否正确
使用命令行工具测试
# 使用OpenSSL检查证书
openssl s_client -connect example.com:443 -servername example.com
# 检查证书有效期
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
# 使用testssl.sh进行全面测试
git clone https://github.com/drwetter/testssl.sh.git
cd testssl.sh
./testssl.sh example.com
常见问题排查
证书不匹配(ERR_CERT_COMMON_NAME_INVALID)
原因: 证书不包含访问的域名
解决:
# 检查证书包含的域名
openssl x509 -in /etc/letsencrypt/live/example.com/cert.pem -text -noout | grep DNS
# 重新获取包含正确域名的证书
sudo certbot --nginx -d example.com -d www.example.com
证书链不完整
原因: 未配置中间证书
解决:
# 使用fullchain.pem(包含服务器证书和中间证书)
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
混合内容警告
原因: HTTPS页面中包含HTTP资源
解决:
<!-- 错误示例 -->
<img src="http://example.com/image.jpg">
<!-- 正确示例 -->
<img src="https://example.com/image.jpg">
<!-- 或使用协议相对URL -->
<img src="//example.com/image.jpg">
总结
2026年VPS上SSL证书的安装和配置需要关注以下关键点:
- 证书选择 - 根据需求选择Let's Encrypt或商业证书
- 自动化部署 - 使用Certbot自动获取和续期证书
- 安全配置 - 启用TLS 1.3、HSTS、OCSP Stapling
- 多域名支持 - 使用SAN或通配符证书
- 性能优化 - 配置SSL会话缓存、禁用不安全的协议
- 持续监控 - 设置证书过期监控和自动续期
- 定期测试 - 使用SSL Labs等工具测试配置安全性
通过正确实施这些步骤,您可以确保VPS上的网站获得最高的SSL安全评级,保护用户数据安全并提升搜索引擎排名。
相关文章推荐
- 2026年VPS安全配置完全指南 - 全方位保护您的服务器
- 2026年VPS CDN配置完全指南 - 结合CDN提升HTTPS性能
- 2026年VPS优化Nginx完全指南 - 优化Web服务器SSL性能
- 2026年VPS故障排查完全指南 - 解决SSL证书常见问题
- 2026年VPS控制面板对比 - 使用面板简化SSL证书管理
本文作者: SEO优化团队
最后更新: 2026年5月28日
版权声明: 本文为 www.shenma98.com 原创文章,转载请注明出处。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)