给二级域名配置https,核心条件有三个:域名解析权、服务器管理权限、匹配的SSL证书;步骤则围绕证书申请、部署、重定向和验证展开,全程操作熟练的话十几分钟就能完成。
配置https这件事,很多人以为很复杂,其实只要理清条件和流程,二级域名和主域名没什么本质区别,难点往往不在操作,而在你对证书和域名匹配规则的理解,下面按顺序拆开讲。
二级域名https证书怎么申请:先确认这三个硬性条件
动手之前,先对照下面三条检查自己是否具备条件,缺任何一条,配置都会卡住。
- 域名解析权:你要能登录域名服务商的后台,操作DNS记录,因为证书签发通常需要通过添加TXT记录或上传文件来验证域名所有权。
- 服务器管理权限:无论是虚拟主机还是云服务器,你得能改网站配置、上传证书文件、重启Web服务,没有SSH或面板管理权限,证书装不上去。
- 证书与域名完全匹配:这是最容易踩坑的地方,单域名证书必须精确匹配二级域名,比如
blog.example.com的证书不能用在shop.example.com上,根域名的证书只能保护example.com本身,覆盖不了任何二级域名。
如果三个条件都满足,恭喜你,可以正式进入证书申请环节了。
二级域名ssl证书多少钱?单域名和泛域名怎么选
这是选证书时最常见的纠结,本质上是花钱方式的选择。
- 单域名证书:只保护一个二级域名,价格最低,以常见的DV证书为例,一年几十元到数百元不等,有些云服务商还会提供免费版,适合只给一个二级域名上https的情况。
- 泛域名证书(通配符证书):一张证书保护
.example.com下所有二级域名,比如blog.example.com、shop.example.com、m.example.com都能用,价格比单域名证书贵一截,但如果你的二级域名超过两个,综合算下来反而划算。 - 免费证书:Let‘s Encrypt等CA机构提供90天有效期的免费证书,支持单域名和泛域名,代价是每90天要续期一次,可以用脚本自动化,但对运维能力有一定要求,不熟悉定时任务的新手,建议先掏钱买付费证书省心。
行业共识认为:只配一个二级域名就直接买单域名证书,别为了以后的可能多花钱;手里已经有好几个二级域名,或者近期打算新增,直接上泛域名证书,省去后续一张张申请的时间。
| 对比项 | 单域名证书 | 泛域名证书 |
|---|---|---|
| 保护范围 | 仅一个二级域名 | 该域名下全部二级域名 |
| 价格 | 几十元到数百元一年 | 数百元到上千元一年 |
| 续期管理 | 每张单独管理 | 一张证书统一管理 |
| 适用场景 | 单个站点临时过渡 | 多站点长期运营 |
网站二级域名配置https步骤:从申请到部署全流程
条件齐了,证书也选好了,下面就是实打实的操作步骤,以最常见的Linux服务器+Nginx环境为例,其他环境思路完全一致。
第一步:生成密钥和证书签名请求
在服务器上执行以下命令,生成私钥和CSR文件,把命令里的blog.example.com替换成你自己的二级域名。
openssl req -new -newkey rsa:2048 -nodes \ -keyout blog.example.com.key \ -out blog.example.com.csr \ -subj "/C=CN/CN=blog.example.com"
执行后会产生两个文件:.key是私钥,自己保存好别泄露;.csr是证书请求文件,填好你的域名信息后提交给CA机构或云服务商的证书管理后台。
第二步:验证域名所有权并等待签发
目前主流CA机构支持两种验证方式:
- DNS验证:在你的域名服务商后台添加一条TXT记录,记录内容由CA提供,添加后等待解析生效,通常几分钟内完成验证。
- 文件验证:在二级域名的网站根目录下创建一个指定路径的文件,让CA通过HTTP访问确认你对域名的控制权,需要服务器上已运行网站服务。
验证通过后,CA会签发证书文件,付费证书一般在几分钟到几小时之间,免费证书通常也在这个范围,你最终会拿到两个文件:.crt(证书文件)和可能附带的一个.pem或.ca-bundle(中间链证书)。
第三步:部署证书到Web服务器
Nginx环境,在配置目录下新建或编辑blog.example.com.conf文件,在server块中加入:
server {
listen 443 ssl;
server_name blog.example.com;
ssl_certificate /etc/nginx/ssl/blog.example.com.crt;
ssl_certificate_key /etc/nginx/ssl/blog.example.com.key;
# 其他站点配置保持不动
}
Apache环境,对应配置为:
<VirtualHost :443>
ServerName blog.example.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/blog.example.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/blog.example.com.key
</VirtualHost>
如果你用的是宝塔面板、LNMP一键包这类可视化工具,直接在网站设置里找到“SSL”选项,把证书内容粘贴进去即可,面板会自动生成对应的配置文件,操作本质相同,只是省去了手写配置的环节。
改完配置后,先检查语法再重载服务:
nginx -t systemctl reload nginx
第四步:将http请求强制跳转到https
证书部署完,还得让所有访问http地址的用户自动转到https,否则老链接依然是明文传输,Nginx环境中,在原来的80端口server块里加入重定向:
server {
listen 80;
server_name blog.example.com;
return 301 https://$host$request_uri;
}
或者在已有的80端口配置块内加上这条规则,改完同样执行nginx -t和systemctl reload nginx。
注意一点:如果你的二级域名本身是给API接口或小程序后端用的,跳转方式得考虑客户端是否支持301跟随,绝大多数现代客户端都支持,但个别老设备可能例外,需要你根据实际调用方判断。
第五步:验证配置是否真正生效
这一步很多人会跳过,恰恰是最容易出问题的环节,按顺序做三件事:
- 浏览器直接访问
https://blog.example.com,确认地址栏出现锁标,点击证书详情检查证书是否对应你的二级域名。 - 用在线SSL检测工具(比如myssl.com这类服务)扫描你的域名,重点关注证书链完整性、协议版本、是否支持TLS1.2以上,证书链不全会导致部分老客户端报错。
- 检查页面混合内容,打开浏览器开发者工具,看Console和Network面板有没有提示“Mixed Content”的请求,发现http开头的图片、JS或CSS资源,把它们全部改成https链接,否则页面锁标会被浏览器标为不安全。
二级域名https证书部署常见问题
二级域名可以直接用根域名的证书吗?
不可以,证书的域名匹配是精确匹配加一层通配规则,一张只包含example.com的证书,访问blog.example.com时会直接报证书无效,根域名证书覆盖不了二级域名,除非证书本身是泛域名证书或明确列了该二级域名。
泛域名证书能不能保护三级域名?
不能,标准的泛域名证书只匹配.example.com一层,能覆盖blog.example.com,但覆盖不了a.blog.example.com这类三级域名,如果你有三级域名的需求,得单独申请对应的证书或考虑多级通配方案。
配置完成后http还能访问,但https打不开,怎么回事?
很大概率是服务器防火墙没放行443端口,去云服务商的安全组和服务器本地的iptables/firewalld里检查,确认443端口处于放行状态,然后是证书文件路径或权限问题,Nginx工作进程需要能读取到证书文件,检查.crt和.key的文件权限至少为644和600。
配置二级域名https这件事,核心就一句话:证书对了、路径对了、端口通了,剩下就是重定向和验证的事,按这篇文章的条件自查一遍,再顺着五步走完,大部分场景都能顺利跑通,碰到个别环境差异时,先看报错日志,再回查对应的配置项,基本都能定位到原因。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/773111.html


