如何在VPS服务器上申请SSL证书?
| 证书类型 |
验证方式 |
有效期 |
适用场景 |
推荐工具 |
| DV证书 |
域名验证 |
90天 |
个人网站、博客 |
Certbot |
| OV证书 |
组织验证 |
1年 |
企业网站 |
OpenSSL |
| EV证书 |
扩展验证 |
1年 |
电商、金融 |
ACME客户端 |
| 通配符证书 |
域名验证 |
90天 |
多子域名 |
acme.sh |
| 自签名证书 |
无验证 |
自定义 |
测试环境 |
OpenSSL |
如何在VPS上申请SSL证书?详细步骤教你为网站配置HTTPS加密
为VPS服务器申请SSL证书是确保网站数据传输安全的重要环节,能够有效保护用户隐私并提升网站可信度。本文将详细介绍在VPS上申请SSL证书的完整流程。
SSL证书申请方法概览
| 方法编号 |
申请方法 |
适用场景 |
难度级别 |
| 方法一 |
使用Certbot自动申请 |
新手用户、快速部署 |
简单 |
| 方法二 |
使用acme.sh脚本申请 |
高级用户、自定义需求 |
中等 |
| 方法三 |
手动生成CSR申请 |
企业证书、OV/EV证书 |
复杂 |
详细操作步骤
方法一:使用Certbot自动申请免费证书
操作说明:Certbot是Let's Encrypt官方推荐的自动化证书管理工具,能够自动完成域名验证和证书部署。
使用工具提示:确保VPS系统为CentOS 7+/Ubuntu 16+,并已安装Web服务器(Nginx/Apache)。
# 更新系统包管理器
sudo apt update && sudo apt upgrade -y
安装Certbot
sudo apt install certbot python3-certbot-nginx -y
申请证书(替换yourdomain.com为实际域名)
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
测试自动续期
sudo certbot renew --dry-run
工具界面模拟:
===========================================
Certbot SSL证书申请向导
===========================================
请输入您的域名: yourdomain.com
请选择验证方式:
HTTP验证(需要暂时停止Web服务)
DNS验证(需要配置DNS记录)
选择: 1
正在验证域名所有权...
✓ 域名验证成功
正在生成证书...
✓ 证书生成完成
是否自动配置Nginx? [Y/n]: Y
✓ Nginx配置已更新
方法二:使用acme.sh脚本申请
操作说明:acme.sh是一个纯Shell脚本,支持多种DNS API,适合需要自动化管理的场景。
使用工具提示:需要获取DNS服务商的API密钥,支持Cloudflare、阿里云等主流DNS服务商。
# 安装acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc
设置Cloudflare API密钥(以Cloudflare为例)
export CFKey="yourcloudflareapikey"
export CFEmail="youremail@example.com"
申请证书
acme.sh --issue --dns dnscf -d yourdomain.com -d .yourdomain.com
安装证书到指定目录
acme.sh --install-cert -d yourdomain.com \
--key-file /etc/ssl/private/yourdomain.com.key \
--fullchain-file /etc/ssl/certs/yourdomain.com.crt
方法三:手动生成CSR申请商业证书
操作说明:适用于需要组织验证(OV)或扩展验证(EV)证书的企业用户,通过生成CSR文件向证书颁发机构申请。
使用工具提示:需要准备组织证明材料,申请流程需要1-3个工作日。
# 生成私钥
openssl genrsa -out yourdomain.com.key 2048
生成CSR文件
openssl req -new -key yourdomain.com.key -out yourdomain.com.csr
查看CSR内容
openssl req -in yourdomain.com.csr -noout -text
工具界面模拟:
OpenSSL证书签名请求生成器
=================================
国家代码 (2字母) [CN]: CN
省份/州 [Beijing]: Beijing
城市 [Beijing]: Beijing
组织名称 [Your Company]: Your Company
部门名称 [IT Department]: IT Department
通用名称 (域名) []: yourdomain.com
邮箱地址 []: admin@yourdomain.com
请额外提供以下信息:
挑战密码 []: (可选)
可选公司名称 []: (可选)
正在生成CSR文件...
✓ 私钥文件: yourdomain.com.key
✓ CSR文件: yourdomain.com.csr
Web服务器证书配置
Nginx配置示例
server {
listen 443 ssl http2;
servername yourdomain.com www.yourdomain.com;
sslcertificate /etc/ssl/certs/yourdomain.com.crt;
sslcertificatekey /etc/ssl/private/yourdomain.com.key;
# SSL安全配置
sslprotocols TLSv1.2 TLSv1.3;
sslciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
sslpreferserverciphers off;
# 其他配置...
}
Apache配置示例
ServerName yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/yourdomain.com.crt
SSLCertificateKeyFile /etc/ssl/private/yourdomain.com.key
# 强制HTTPS重定向
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.)$ https://%{HTTPHOST}%{REQUEST_URI} [L,R=301]
常见问题与解决方案
| 问题 |
可能原因 |
解决方案 |
| 证书申请失败,提示域名验证不通过 |
DNS解析未生效或配置错误 |
检查DNS记录是否正确,等待TTL时间过期,使用dig yourdomain.com验证解析 |
| HTTPS访问显示证书不安全 |
证书链不完整或浏览器不信任 |
确保证书文件包含完整证书链,使用SSL检测工具验证配置 |
| 证书续期失败 |
防火墙阻止ACME挑战或配置变更 |
检查80/443端口是否开放,验证Certbot配置是否正确 |
| 混合内容警告 |
网页中仍引用HTTP资源 |
检查并更新所有资源链接为HTTPS,使用内容安全策略 |
| 性能下降明显 |
SSL配置不当或加密套件过时 |
启用HTTP/2,优化SSL配置,使用会话复用和OCSP装订 |
完成证书部署后,建议使用SSL检测工具验证配置是否正确,确保证书链完整、协议安全且没有常见配置错误。定期检查证书有效期并设置自动续期,避免证书过期导致的服务中断。
发表评论