腾讯云SSL证书完全对接使用指南:从申请到自动化运维
1. 腾讯云SSL证书服务概览
SSL证书是网站从HTTP升级到HTTPS的核心组件,它通过公钥加密技术对客户端与服务器之间的传输数据进行加密,确保数据在传输过程中不被窃听、篡改或伪造。腾讯云SSL证书服务(SSL Certificates)提供了安全套接层证书的一站式服务,包括证书申请、管理及部署功能,与顶级的数字证书授权机构和代理商合作,为网站、移动应用提供HTTPS解决方案。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
腾讯云SSL证书服务支持的证书类型主要分为三类:
- 域名型(DV)证书:仅验证域名所有权,颁发速度最快(通常几分钟内完成),适用于个人博客、小型展示类网站等对身份验证要求不高的场景。
- 企业型(OV)证书:除验证域名所有权外,还需验证企业身份真实性,适用于教育、政府、互联网等行业的中大型网站,浏览器地址栏会显示企业名称。
- 增强型(EV)证书:最严格的验证级别,需进行全面的企业身份审核,适用于金融、银行、支付类等对安全性和信任度要求极高的网站,浏览器地址栏会显示绿色企业名称。
在证书品牌方面,腾讯云合作了多家国际知名CA机构,包括SecureSite(DigiCert)、GeoTrust、GlobalSign、TrustAsia等。不同品牌在兼容性、价格、售后支持等方面存在差异,付费证书通常提供更好的兼容性和人工技术支持。
2. 证书申请前的准备
在开始申请SSL证书之前,需要完成以下准备工作:
- 注册腾讯云账号并完成实名认证:这是使用腾讯云任何服务的基础前提。个人用户需完成个人实名认证,企业用户需完成企业实名认证。
- 准备待保护的域名:确保证书绑定的域名已注册且可以正常解析。免费证书仅支持单域名(如example.com或www.example.com),不支持通配符域名(*.example.com)和IP地址。
- 了解域名验证方式:腾讯云支持三种域名验证方式——自动DNS验证(适合域名托管在腾讯云DNS的用戶)、手动DNS验证(需手动添加TXT解析记录)、文件验证(需在网站根目录上传指定验证文件)。
3. 证书申请操作流程
3.1 免费证书申请
腾讯云为每个账号提供最多50张免费证书额度。免费证书有效期为90天,不支持绑定通配符域名和IP地址,仅适合测试环境或小型个人项目使用。申请步骤如下:
- 登录SSL证书控制台(console.cloud.tencent.com/ssl),进入“我的证书”页面。
- 单击“申请免费证书”按钮,在弹出的证书对比页面再次单击“申请免费证书”。
- 填写证书申请表单:填写证书绑定的单域名(如example.com),选择域名验证方式(自动DNS验证、手动DNS验证或文件验证),选择加密算法(默认RSA,可选ECC),填写证书备注名(可选)。
- 单击“提交申请”后进入域名验证环节。若选择自动DNS验证且域名托管在腾讯云DNS,系统会自动添加验证记录;若选择手动DNS验证,需按提示在域名解析服务商处添加TXT记录;若选择文件验证,需在网站根目录下创建指定路径和内容的验证文件。
- 域名验证通过后,CA机构将在24小时内完成证书签发。通常情况下,免费证书在验证通过后十几分钟到半小时内即可颁发。
3.2 付费证书申请
付费证书提供更高的安全性、更好的浏览器兼容性以及人工技术支持。购买付费证书的流程如下:
- 进入SSL证书购买页(buy.cloud.tencent.com/ssl),根据业务需求选择证书类型(DV/OV/EV)、证书品牌、域名类型(单域名/多域名/泛域名)及购买年限。
- 完成支付后,证书会出现在SSL证书控制台的“我的证书”列表中,状态为“待提交资料”。
- 单击“提交资料”,根据证书类型填写相应的域名所有权验证信息和企业身份信息(OV/EV证书需提交企业营业执照等资质文件)。
- 完成域名验证和企业身份审核后,CA机构颁发证书。
- 登录SSL证书控制台 > 我的证书,选择需要部署的证书,单击“部署”。
- 在证书部署页面,部署类型选择“轻量应用服务器”。
- 选择与证书域名匹配的轻量应用服务器实例,单击“确定”即可完成部署。
- 在“我的证书”页面单击已签发证书的证书ID,进入证书详情页。
- 在“一键部署证书”模块中单击“负载均衡”。
- 选择目标CLB实例和监听器资源,单击确定完成部署。
- 将证书文件和私钥文件上传到服务器指定目录(如/usr/local/nginx/conf/ssl/)。
- 编辑Nginx配置文件(nginx.conf或conf.d/下的站点配置文件),在server块中添加SSL相关配置。
- 重启Nginx服务使配置生效。
- 将证书文件上传到服务器指定目录(如/etc/httpd/ssl/或/etc/apache2/ssl/)。
- 编辑Apache配置文件(httpd.conf或conf.d/ssl.conf),启用SSL模块并添加虚拟主机配置。
- 重启Apache服务使配置生效。
- CertificateInfoSubmit:提交证书资料,用于OV/EV证书的企业信息提交。
- CertificateOrderSubmit:提交证书订单到CA机构。
- DescribeCertificateDetail:查询证书签发状态和详细信息。
- ReplaceCertificate:对证书进行重颁发(证书私钥泄露或需要更换时使用)。
- RevokeCertificate:吊销证书。
- UploadCertificate:上传第三方签发的证书到腾讯云SSL证书服务进行统一管理。
- 自动续费:付费证书可在过期前14天开启自动续费,系统将在证书到期前自动完成续费扣款和证书重新签发。
- 证书托管服务:在检测到续费的新证书(或指定证书)后,自动将新证书部署到旧证书关联的腾讯云产品(如CLB、CDN等),无需手动替换。
- 多年期证书:购买1年以上的多年期证书后,腾讯云将在前一个证书到期前30个自然日内自动申请并签发第二张证书,无需重新提交审核资料。
- 登录负载均衡控制台,找到目标CLB实例。
- 创建HTTPS监听器,SSL解析方式选择“双向认证”。
- 上传服务器证书(供客户端验证服务器)和客户端CA证书(供服务器验证客户端)。
- 中间证书缺失:部分浏览器无法通过AI A(Authority Info Access)自动获取中间证书。解决方案是将域名证书与中间证书合并为一个完整的证书链文件重新部署。腾讯云下载的Nginx证书包中的_bundle.crt文件已包含完整证书链。
- 自签名证书:使用了非CA机构签发的自签名证书。应使用腾讯云SSL证书服务签发的正式证书。
- 证书与域名不匹配:检查证书绑定的域名是否与访问的域名完全一致(包括www前缀)。
- 使用相对路径引用资源(如/images/logo.png)。
- 引用绝对路径时使用“//”协议相对URL(如//cdn.example.com/style.css),浏览器会根据当前页面协议自动补齐。
- 将外部资源全部迁移到HTTPS协议。
- 清除浏览器缓存后重新访问。
- 在证书过期前提前替换新证书,避免浏览器缓存过期证书信息。
- 检查CAA记录:域名解析中的CAA记录可能限制了证书颁发机构。需确保CAA记录包含Sectigo(腾讯云免费证书的CA机构)。
- 验证DNS记录是否正确添加:使用DNS诊断工具检查验证记录是否在全球范围内生效。
- 检查服务器防火墙:文件验证方式下,CA机构的验证IP(如91.199.212.132等)可能被服务器防火墙屏蔽。
- 服务器防火墙未放行443端口(需在安全组中添加入站规则允许443/TCP)。
- Web服务器未正确监听443端口或配置错误。
- TLS协议版本配置不当(部分老旧浏览器不支持TLSv1.2/1.3)。
- 选择合适的证书类型:个人博客和测试环境使用DV证书即可;企业网站建议使用OV证书以提升用户信任度;金融支付类网站必须使用EV证书。
- 启用HTTP严格传输安全(HSTS):在Web服务器配置中添加
Strict-Transport-Security响应头,强制浏览器在指定时间内只通过HTTPS访问网站,有效防止SSL剥离攻击。 - 定期检查证书有效期:建议在证书到期前30天开始续期流程。可利用监控工具(如Prometheus + Blackbox Exporter)自动监测证书有效期并发送告警。
- 使用托管服务减少运维负担:对于部署在腾讯云上的业务,充分利用证书托管和自动续期功能,实现证书的全生命周期自动化管理。
- 证书私钥安全:私钥文件应设置严格的文件权限(如600),避免泄露。定期更换证书(重颁发)以降低私钥泄露风险。
- 启用TLS 1.3:TLS 1.3相比1.2具有更快的握手速度和更强的安全性,现代浏览器均已支持。
4. 证书部署方式详解
证书签发后,需要将其部署到Web服务器或云服务产品上才能生效。腾讯云SSL证书提供灵活的部署方式,既支持一键部署到腾讯云生态内的云资源,也支持下载证书文件后手动部署到任意服务器。
4.1 一键部署到腾讯云云资源
对于使用腾讯云产品的用户,一键部署是最便捷的方式。SSL证书控制台支持一键部署到以下云服务:负载均衡CLB、内容分发网络CDN、Web应用防火墙WAF、对象存储COS、容器服务Ingress、轻量应用服务器Lighthouse、DDoS防护、云直播CSS、云点播VOD、API网关、边缘安全加速平台EdgeOne、全球应用加速GAAP、消息队列MQTT和RabbitMQ等。
以部署到轻量应用服务器为例:
需要注意的是,自动部署到轻量应用服务器仅支持特定镜像(如WordPress、WooCommerce、Typecho、LAMP等),其他镜像需手动部署。
以部署到负载均衡CLB为例:
负载均衡HTTPS监听器支持配置双证书(RSA和ECC两种加密算法类型同时配置),也支持启用SNI(Server Name Indication),为同一个监听器下的不同域名配置不同的证书。
4.2 手动部署到Nginx服务器
手动部署需要从SSL证书控制台下载证书文件,然后上传到服务器并修改Web服务器配置。下载证书时,控制台会根据选择的服务器类型(Nginx、Apache、IIS、Tomcat等)提供不同格式的证书文件包。
Nginx证书文件说明:下载Nginx类型的证书包后,解压得到两个核心文件——域名_bundle.crt(证书文件,包含域名证书和中间证书)和域名.key(私钥文件)。
Nginx配置步骤:
以下是一个完整的Nginx HTTPS配置示例:
server {
listen 443 ssl http2;
server_name example.com;
# 证书文件路径
ssl_certificate /usr/local/nginx/conf/ssl/example.com_bundle.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/example.com.key;
# SSL协议与加密套件配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 会话缓存优化
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 站点根目录与索引
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
# HTTP请求强制跳转HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}配置完成后,执行nginx -t检查配置语法是否正确,然后执行systemctl reload nginx或nginx -s reload平滑重启Nginx。
4.3 手动部署到Apache服务器
Apache证书包解压后通常包含三个文件:域名.crt(证书文件)、域名.key(私钥文件)、域名.ca-bundle(中间证书链文件)或域名_bundle.crt。
Apache配置步骤:
以下是一个完整的Apache HTTPS配置示例:
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html
# 证书文件路径
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/example.com.crt
SSLCertificateKeyFile /etc/httpd/ssl/example.com.key
SSLCertificateChainFile /etc/httpd/ssl/example.com.ca-bundle
# SSL协议配置
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5
SSLHonorCipherOrder on
# 日志配置
ErrorLog logs/example.com-error_log
CustomLog logs/example.com-access_log common
</VirtualHost>
# HTTP跳转HTTPS
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>配置完成后,执行apachectl configtest检查配置,然后执行systemctl reload httpd或apachectl graceful重启Apache。
4.4 手动部署到Tomcat服务器
Tomcat使用JKS(Java KeyStore)格式的证书文件。在SSL证书控制台下载证书时选择Tomcat类型,会得到一个PFX(PKCS#12)格式的证书文件和密码,需要将其转换为JKS格式或直接使用PFX格式配置Tomcat。
使用PFX格式配置Tomcat的server.xml示例:
<Connector port=\"443\" protocol=\"org.apache.coyote.http11.Http11NioProtocol\"
maxThreads=\"150\" SSLEnabled=\"true\"
scheme=\"https\" secure=\"true\"
clientAuth=\"false\" sslProtocol=\"TLS\"
keystoreFile=\"/path/to/example.com.pfx\"
keystoreType=\"PKCS12\"
keystorePass=\"your_password\" />5. SSL证书API自动化管理
腾讯云SSL证书服务提供API 3.0接口,支持通过编程方式管理证书。这对于需要自动化运维大规模证书的场景尤为重要。
核心API接口:
以下是通过API Explorer调用DescribeCertificateDetail查询证书详情的Python示例:
# 使用腾讯云SDK调用SSL证书API
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.ssl.v20191205 import ssl_client, models
# 初始化认证信息
cred = credential.Credential(\"your_secret_id\", \"your_secret_key\")
# 配置HTTP和客户端
httpProfile = HttpProfile()
httpProfile.endpoint = \"ssl.tencentcloudapi.com\"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = ssl_client.SslClient(cred, \"ap-guangzhou\", clientProfile)
# 构造请求参数
req = models.DescribeCertificateDetailRequest()
params = {
\"CertificateId\": \"your_certificate_id\"
}
req.from_json_string(json.dumps(params))
# 发起请求
resp = client.DescribeCertificateDetail(req)
print(resp.to_json_string())6. 证书托管与自动续期
SSL证书的有效期通常为一年(付费证书)或90天(免费证书)。证书过期后网站将无法正常提供HTTPS服务,因此证书的续期管理至关重要。
腾讯云提供以下自动化管理能力:
开启自动续费的操作步骤:在SSL证书控制台 > 我的证书中,找到对应证书,单击“开启自动续费”即可。
7. 高级配置:双向认证
标准的HTTPS是单向认证——客户端验证服务器身份。双向认证则要求客户端也提供证书供服务器验证,适用于对安全性要求极高的场景(如企业内部系统、金融交易等)。
在负载均衡CLB中配置双向认证的步骤:
在Nginx中配置双向认证,需在server块中添加以下指令:
# 双向认证配置(在原有SSL配置基础上增加)
ssl_verify_client on;
ssl_client_certificate /path/to/ca_certificates.crt;
ssl_verify_depth 2;在Apache中配置双向认证,需在VirtualHost中添加:
SSLVerifyClient require
SSLVerifyDepth 2
SSLCACertificateFile /path/to/ca_certificates.crt8. 常见问题排查与解决
证书部署后可能遇到各种问题,以下是常见问题的排查方法:
8.1 浏览器提示“连接不安全”或“证书不受信任”
可能原因及解决方案:
8.2 HTTPS页面包含HTTP混合内容
证书已成功部署但仍显示“连接不安全”,通常是因为HTTPS页面中引用了HTTP协议的资源(图片、CSS、JS等)。解决方案:
8.3 证书过期后重新部署仍提示不安全
浏览器缓存了旧证书信息。解决方案:
8.4 证书颁发超时或失败
免费证书颁发时间一般不超过30分钟,若超时可从以下方面排查:
8.5 443端口无法访问
可能原因及解决方案:
9. 最佳实践建议
10. 问答环节
问1:腾讯云免费SSL证书和付费证书有什么区别?
答:免费证书有效期为90天,仅支持单域名,不支持通配符域名和IP地址,不提供人工技术支持。付费证书有效期为1年或更长,支持泛域名和多域名,提供更好的浏览器兼容性、更高的安全等级以及人工客服支持。正式生产环境建议使用付费证书。
问2:证书申请时的DNS验证和文件验证有什么区别?
答:DNS验证需在域名解析服务商处添加TXT记录,适合不想在服务器上放置文件的场景,也适合域名未绑定服务器的场景。文件验证需在网站根目录下上传指定验证文件,适合服务器已部署且可对外访问的场景。如果域名托管在腾讯云DNS,自动DNS验证最为便捷。
问3:证书部署到Nginx后如何强制HTTP跳转到HTTPS?
答:在Nginx配置中添加一个监听80端口的server块,使用return 301 https://$server_name$request_uri;将所有HTTP请求永久重定向到HTTPS版本。具体配置示例见本文4.2节。
问4:证书快过期了怎么办?如何自动化续期?
答:付费证书可在SSL证书控制台开启自动续费,系统将在到期前自动完成续费。开启证书托管服务后,新证书会自动部署到关联的云资源。免费证书不支持续费,需在过期前重新申请。
问5:一个服务器上托管多个域名,如何配置不同的SSL证书?
答:Nginx支持在同一IP和端口上通过server_name区分不同域名,每个server块配置各自的证书文件。负载均衡CLB的HTTPS监听器支持启用SNI,为不同域名配置不同证书。
问6:部署证书后浏览器显示“证书链不完整”怎么办?
答:这是因为服务器只配置了域名证书,未包含中间证书链。解决方案是将域名证书和中间证书合并为一个文件。腾讯云下载的Nginx证书包中的_bundle.crt已包含完整证书链。Apache用户需正确配置SSLCertificateChainFile指令指向中间证书文件。详细的补全教程请参考腾讯云官方文档。



