获取服务器SSL证书的详细步骤,核心其实只有三步:生成CSR并提交给证书颁发机构、完成域名所有权验证、把下发的证书文件安装到服务器并开启HTTPS跳转,本文按这个主线拆开讲,每一步都可能遇到的具体坑也会一并交代清楚。
服务器获取SSL证书的详细步骤,先从证书类型说起
动手申请之前,你得先搞明白自己需要哪一种证书,不是越贵越好,而是匹配场景,很多新手上来就绕过DV直接看OV,结果审核卡在营业执照上,白白浪费了好几天。
| 证书类型 | 验证方式 | 适用场景 | 签发周期 | 常见成本 |
|---|---|---|---|---|
| DV(域名型) | 验证域名控制权 | 个人博客、测试站点、普通企业展示站 | 几分钟到几小时 | 有免费版 |
| OV(组织型) | 验证域名+企业真实身份 | 电商、SaaS平台、需要展示企业信息的站点 | 1-3个工作日 | 几百到上千元/年 |
| EV(增强型) | 最严格的律师电话回访 | 金融、政务、大型品牌官网 | 2-5个工作日 | 数千元/年 |
行业共识认为,绝大多数中小网站选DV证书完全够用,加密强度没有任何区别,浏览器地址栏的小锁图标和付费版一模一样。
免费SSL证书和付费证书有什么区别
免费数字证书和付费证书的主要差异在信任层级的验证严格度,而非加密技术本身,免费版多为DV,只证明“你控制这个域名”,付费OV/EV还能证明“背后是一家真实存在的企业”。
如果你的网站涉及在线支付、会员登录收集手机号,业内专家建议至少用OV证书,用户在地址栏看到公司名称,转化信任感会明显比裸奔的DV证书高一个档次。
个人网站SSL证书申请需要准备什么
准备三样东西就行:
- 一个已解析到服务器的域名(没备案的话国内服务器会卡在80端口,需要用443直连测试)
- 服务器的SSH登录权限(命令行操作快捷键)
- 一个邮箱(用来收取验证邮件和到期提醒)
SSL证书申请的具体操作流程:从生成CSR到完成验证
拿到证书之前,所有流程都在你自己的服务器上发起,以下步骤以免费版DV证书为例,是服务器获取SSL证书的详细步骤中最常见的走法。

第一步:在服务器上生成CSR和私钥
CSR是申请证书的“申请书”,里面包含你的公钥和域名信息,私钥则是之后配置Nginx/Apache时唯一的钥匙,全程不要泄露给任何人。
登录服务器,执行这条命令:
openssl req -new -newkey rsa:2048 -nodes -out yourdomain.csr -keyout yourdomain.key
命令执行后会弹出一系列问题,挨个填写:
- Country Name:国家代码,填CN
- State:省份,填你备案时填的省份全拼
- Locality:城市拼音
- Organization Name:个人填姓名拼音,企业填公司英文名或拼音
- Common Name:域名,不带http,也不带www,直接填主域名
完成后,你会得到两个文件:yourdomain.csr(申请文件)和yourdomain.key(私钥文件)。
第二步:把CSR内容提交给证书颁发机构
找一个靠谱的证书颁发机构,国内常见的有简米云、酷番云的数字证书管理页面,国外有Let's Encrypt、DigiCert等,用cat yourdomain.csr命令查看申请码,把-----BEGIN CERTIFICATE REQUEST-----到-----END CERTIFICATE REQUEST-----复制粘贴到网站的申请框里。
器云的控制台会让你直接上传CSR文件,或者选择“在线生成”模式自动帮你生成CSR和私钥。如果你不想手动执行openssl,建议直接在云控制台生成,省时省力且私钥文件自动存储在云端密钥管理系统里。
第三步:完成域名所有权验证
证书颁发机构需要确认域名真的是你的,DV证书通常有两种验证方式:
- 文件验证:把机构下发的一个验证文件(比如一串hash.txt)通过FTP或服务器命令放到网站的“/.well-known/acme-challenge/”目录下,机构访问“http://你的域名/文件路径”能打开即通过。
- DNS验证:去域名解析后台添加一条TXT记录,记录名和记录值由证书颁发机构指定,解析生效后,机构去根服务器查询到该记录即通过。
建议优先选DNS验证,因为文件验证在服务器没配好HTTP访问时会失败,而DNS验证只要域名能正常解析就不受服务器状态影响。

把证书部署到服务器上,Nginx和Apache的实操细节
证书签发邮件里会有一个ZIP压缩包(如for nginx、for apache的文件夹),或直接在控制台下载证书文件,把里面的.pem证书文件和之前生成的.key私钥文件传到服务器指定目录。
Nginx部署SSL证书详细步骤
- 把证书和私钥文件放到
/etc/nginx/ssl/目录下 - 修改站点配置文件:
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/nginx/ssl/yourdomain.pem;
ssl_certificate_key /etc/nginx/ssl/yourdomain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}
- 执行
nginx -t测试配置语法 - 执行
systemctl reload nginx让配置生效
在浏览器输入https://你的域名,如果地址栏出现小锁,就说明证书已经生效了。
Apache部署SSL证书时的差异点
Apache的配置思路类似,只是指令名称不同,重点修改/etc/httpd/conf.d/ssl.conf或在虚拟主机配置里加入:
<VirtualHost :443>
ServerName yourdomain.com
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/yourdomain.pem
SSLCertificateKeyFile /etc/httpd/ssl/yourdomain.key
</VirtualHost>
改完记得重启Apache服务:systemctl restart httpd。
部署完以后别忘了强制HTTPS跳转
仅仅在443端口配好证书还不够,用户访问http://开头时如果依然能打开网页,就说明老的HTTP链路上没有任何加密,需要把80端口的流量全部301转到443:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
这样即使别人手动输入老地址,也会被自动拽到加密连接上。
常见错误排查清单
- 证书不生效,显示NET::ERR_CERT_COMMON_NAME_INVALID:大概率是证书签发的域名和你访问的域名不一致,要带www和不带www的都要能访问,申请证书时把两个域名都填进去,申请泛域名证书也可以。
- 证书文件无法读取:检查服务器上
.pem文件的权限是否设置成了644,文件是否设置了600,权限过低会导致Nginx服务读不到。
.key
- SSL握手超时:看看服务器防火墙和云安全组是否放行了443端口。
证书到期与自动续期的自动化方案
证书不是永久的,DV免费证书有效期通常只有90天,OV付费证书常见的是1年期,过期当天网站会直接打不开,这不是吓唬你,是HTTPS协议层面直接拦截。
手动续期的流程和首次申请基本一致,但更建议配置自动化,以Let's Encrypt为例,安装certbot后执行:
certbot certonly --webroot -w /var/www/yourdomain -d yourdomain.com
certbot会在证书到期前30天自动续期,再配合crontab每月跑一次certbot renew命令,就完全不用手动管了,近年来,越来越多的国内大厂也开放了ACME协议接口,简米云、酷番云都能通过API自动交换证书,别再傻傻每年手动点续费了。
关于服务器获取SSL证书的高频问题解答
一个域名可以申请多张SSL证书吗?
可以,同一域名可以申请多张证书分别用在不同的服务器或不同的TCP端口(比如一台服务器跑两个8081端口上的HTTPS服务),但每张证书都有独立的私钥,需要各自生成CSR,注意部分免费证书对同一域名重复申请有数量限制,比如Let's Encrypt每周每个域名限5张。
服务器获取SSL证书后会影响网站打开速度吗?
几乎无感,HTTPS比HTTP多一步握手协商加密参数,在RSA-2048强度下会多出几十毫秒的交互延迟,可以通过启用OCSP Stapling、TLS会话复用、HTTP/2来把这些开销抵消掉,多数情况下,配置完HTTPS后网站反而会因为HTTP/2的多路复用特性而感觉更快。
证书和私钥文件丢失了怎么办?
私钥文件丢失没有找回渠道,只能重新生成CSR并申请新证书,如果申请的是付费证书,大多数商家支持在控制台点击“重新签发”,补交一次域名验证就免费用剩余时长换一张新证书,免费证书则直接重新走一遍申请流程即可,之前的部署配置里更换证书文件路径就行。
最终一眼过看完这套服务器获取SSL证书的详细步骤:选类型、生成CSR、提交验证、部署安装、做跳转、设自动续期,只要对照着操作一遍,以后任何域名的HTTPS配置对你来说都只是复制粘贴的重复劳动。