尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

腾讯云免费SSL证书申请与部署完整指南:从零开通HTTPS

腾讯云免费SSL证书申请与部署完整指南:从零开通HTTPS 你的域名备案好了、服务器也买了、网站也上线了但访客一打开浏览器就盯着地址栏前面那个不安全三个字看。这放在两年前还能忍现在搜索引擎和浏览器都在推HTTPS打开一个HTTP网站Chrome直接标红提示用户第一印象就垮了。你要做的其实很简单——给网站装一张SSL证书把HTTP升级成HTTPS。市面上的SSL证书从几十块到几千块一年的都有但个人博客、中小企业官网、测试环境这类场景我劝你别一上来就买付费的。腾讯云有免费SSL证书可以申请一年能签好几张覆盖单域名场景完全够用。本文就从申请、验证、部署到续期把整个流程遇到的问题一次性说清楚。1. 为什么你的网站需要HTTPS免费证书到底够不够用1.1 没有HTTPS你损失的不仅是安全先花两分钟把HTTP和HTTPS的区别理清楚。HTTP协议从设计之初就没考虑过加密问题客户端和服务器之间传输的报文全是明文。你提交一个表单、输入一次密码、登录一次后台这些数据在链路上经过的任何一个路由节点都能被完整读取。严格来说这不是可能被窃取而是非常容易被窃取。HTTPS做的事情其实是在HTTP和TCP之间加了一层TLS/SSL加密协议。数据发送前先用证书里的公钥加密接收方用私钥解密。就算数据包在中间被截获没有私钥解不开读到的只是一堆乱码。这层保护对电商网站、后台系统、带登录功能的博客来说是刚需。但安全只是其中一部分。搜索引擎早就把HTTPS作为排名因素之一同一关键词下HTTPS站点比HTTP站点有优先展示的优势。浏览器也在步步紧逼几年前Chrome只对需要输入密码的页面提示不安全现在所有HTTP页面都被标记了。接口层的请求也在受影响微信小程序、部分第三方支付、地图SDK这类服务都强制要求HTTPS环境你用的是HTTP接口直接调用失败。1.2 免费和付费的真实差距没那么大很多第一次接触SSL证书的人会纠结一个问题免费的能用吗回答这个问题前先搞明白SSL证书到底在卖什么。证书的核心价值在于它回答你连接的这个服务器确实是这个域名的主人这个问题。免费证书和付费证书在加密强度上没有本质区别——它们用的都是TLS协议加密等级都是行业内通行标准理论上都是128位以上加密。真正的区别在于几个维度验证级别免费证书绝大多数是DVDomain Validation域名验证级别只验证域名所有权。付费证书里除了DV还有OVOrganization Validation组织验证和EVExtended Validation扩展验证后面两者会验证企业的真实身份证书详情里会展示企业名称。但个人网站、普通企业展示站用DV就够地址栏的小锁标志一样能亮起来。有效期与续期服务腾讯云免费SSL证书的有效期较短需要定期手动续期。付费证书通常能选一年或多年且在服务期内到期时能享受自动续期或提醒服务。赔付保障付费证书带有一定额度的安全赔付一旦因证书问题造成损失可以申请赔偿。免费证书没有这个。但就把网站从HTTP变成HTTPS这一核心目标来说免费证书的性能和加密能力跟付费没有区别。浏览器不会因为你这张证书是免费的就在锁标志上打折扣。对个人和中小企业场景先用免费证书把HTTPS跑起来等以后有必要再升级这是性价比最高的路径。1.3 腾讯云免费SSL证书的基本限制支持域名类型单域名。你要保护www.example.com就单独申请一张要保护example.com再单独申请一张。如果需要一张证书同时覆盖主域名和所有子域名通配符那得买付费版。申请配额一个腾讯云主账号下免费证书有数量限制一般够用。签发的免费证书有效期较短到期后要重新申请新证书并替换不能在这张证书本身上续期。验证方式DNS验证或文件验证二选一。DNS验证最常用下文会详细讲。提示如果你的网站同时需要example.com和www.example.com都能用HTTPS访问建议把其中一个域名用301跳转到另一个只用一张免费证书保护最终落地的那个域名别花精力为两个域名各签一张。2. 申请前的准备工作域名解析、账号验证这些事别漏掉2.1 域名归属和解析记录确认申请证书前先确认两个条件域名必须能正常解析ICP备案状态必须正常。很多用户在控制台里卡在提交审核失败这一步排查下来都是域名没备案。腾讯云对SSL证书签发有备案校验未备案域名无法签发或者即使签发成功实际部署后浏览器也可能报警。如果你的域名还没备案先去完成备案再回来。其次解析记录要先配好。如果你计划用DNS验证需要在域名解析记录里加一条TXT记录这条记录的记录值是腾讯云随机生成的。如果域名解析本身就在腾讯云DNSPod操作会方便很多——控制台里点几下就能添加。如果域名用的是阿里云或其他DNS服务商则需要登录对应的DNS管理后台手动添加。2.2 账号实名验证与权限检查申请证书用的腾讯云账号需要完成实名认证个人认证即可不需要企业资质。另外注意一下子账号的情况如果你的账号是项目组里开通的CAM子账号需要确认自己有没有SSL证书服务的操作权限。合规管理严格的团队会把证书签发权限收得很死遇到没有权限创建证书之类的提示去找主账号管理员配权限策略别自己跟控制台较劲。2.3 密钥对、密码和备份意识这里讲的不是申请前要生成的密钥而是你应该有的备份意识。证书签发后下载得到的压缩包里包含证书文件.crt或.pem和私钥文件.key或.pem。私钥一旦泄露等于你网站的大门钥匙丢了任何拿到私钥的人都能伪装成你的服务器。所以私钥文件不要通过微信、邮件等渠道传输下载后直接放到服务器对应目录。服务器上的私钥文件权限设置为600或400禁止其他用户读取。妥妥地做好服务器快照或备份万一配置改坏了还能恢复现场。3. 一步步申请腾讯云免费SSL证书控制台流程全走一遍3.1 进入SSL证书控制台找到免费证书入口打开腾讯云官网登录控制台在搜索框输入SSL证书进入证书管理页面。控制台首页会区分付费证书和免费证书的申请入口找到免费证书对应的操作按钮进入申请页。如果你在控制台里找不到入口也可以直接搜索SSL证书申请控制台会返回证书列表页页面上一般有申请免费证书或免费证书申请的横幅按钮。免费证书通常需要在每个自然年内主动申请领取额度领取后额度才会计入账号。3.2 填写申请信息绑定域名和验证方式进入申请页后需要填写的关键字段有字段填写内容注意事项证书类型免费版SSL证书默认就是无需改动绑定域名你的完整域名如 www.example.com一定要填全别漏www前缀验证方式DNS验证 / 文件验证推荐DNS验证算法选择RSA或ECC默认RSA 2048即可兼容性最好算法这里值得多说一句。RSA 2048是当前兼容面最广的选择从Windows XP时代的浏览器到现在的所有主流浏览器都能正常识别如果你不像我一样有特殊需求RSA就够了。ECC椭圆曲线算法的优势在于密钥短、握手速度快但一些老旧的设备和安卓低版本WebView对ECC的支持不稳定。纯个人博客选RSA省心。3.3 提交审核与等待签发信息填完提交后系统会给域名归属校验。如果你选择的是DNS验证控制台会显示待添加的TXT记录键值和记录值。把这条TXT记录添加到域名解析中后点击验证按钮系统会去检查这条记录是否已经生效验证通过后进入签发流程。全程走完基本在几分钟到一小时内比传统付费证书动辄数天的审核快得多。免费证书经常出现提交后立即签发的情况但也有例外——Cloudflare那边用了CDN代理TXT记录生效时间可能推迟到十分钟以上耐心等一下再点验证。4. DNS验证和文件验证两种方式怎么选实操步骤全解4.1 DNS验证最推荐的方式步骤拆解DNS验证的原理是CA机构要求你证明自己拥有这个域名的控制权解决办法是你去DNS解析里加一条特定的TXT记录CA看到这条记录存在就知道域名确实是你管理的了。具体操作步骤如下在证书申请页的验证信息里复制TXT记录名和记录值。记录名通常形如_dnsauth也可能是_acme-challenge之类记录值是一串随机字符串。登录域名所在DNS控制台——如果在腾讯云就进DNSPod找对应域名的解析记录列表。点击添加记录记录类型选择TXT主机记录填第一步复制的记录名比如_dnsauth记录值填那串随机字符串。TTL保持默认即可。保存后回到SSL证书申请页点击验证按钮。有个小细节要注意TXT记录不一定立刻生效。DNS的TTL决定了一条记录在全球生效所需的时间通常5到10分钟所以点击验证前先等几分钟。如果你想确认记录是否已经生效可以用命令行工具查询# Linux/macOS 下查询TXT记录 dig TXT _dnsauth.example.com # Windows PowerShell 下查询 Resolve-DnsName -Type TXT _dnsauth.example.com如果返回结果里有你添加的那串记录值说明已经生效可以验证了。4.2 文件验证适合不方便操作DNS的场景有些时候你没法改DNS解析记录——比如域名不在自己手里、DNS托管在无法登录的第三方平台、或者公司有严格的DNS变更审批流程。这时候用文件验证。文件验证的核心思路是CA会在你的域名根路径下要求访问一个特定文件你能放上去就证明你拥有网页服务器的控制权。操作要点在证书申请页选择文件验证下载一个验证文件通常是.well-known/pki-validation/下的一个文本文件。通过你服务器上的Web服务Nginx/Apache把这个文件放到站点根目录对应的路径下。让CA能通过http://你的域名/.well-known/pki-validation/xxx.txt访问到这个文件。返回控制台点击验证。注意这个文件只能用HTTP访问不能用HTTPS——因为证书还没签发HTTPS访问会失败。4.3 验证失败的常见原因和排查方法我自己踩过一次DNS验证失败后来发现是记录名填错了。控制台给出的记录名前面带了点比如. _dnsauth添加到DNSPod时需要去掉这个点再填。这类细节出问题验证当然不通过。其他常见问题还有TXT记录值复制不完整字符串中间有空格或换行粘贴时被截断。DNS生效延迟刚添加就点验证DNS缓存还没更新。等5到10分钟再试。域名解析不在同一服务商你要加的DNS记录和实际使用的DNS服务商不是同一家导致记录加到了错误的平台。文件权限问题验证文件所在目录权限太高或太低CA访问不到。目录权限设755、文件设644比较合适。5. 证书部署Nginx、Apache、Tomcat的配置详解5.1 下载证书和解压先搞清楚拿到的是什么文件证书签发成功后回到SSL证书列表页点击下载会看到一组服务器类型选项Nginx、Apache、Tomcat、IIS 等。腾讯云会根据你选的类型打包好对应格式的证书文件。常见的有Nginxxxx.crt证书文件xxx.key私钥文件有时候也提供.pem格式。Apache同样的crt和key外加一个root_bundle.crt根证书链。Tomcatxxx.jksJava Keystore或xxx.pfxPKCS#12格式。如果你拿到的格式跟服务器要求不一致不用担心后面会讲到怎么转换。5.2 Nginx配置最常用步骤最清晰把下载到的.crt和.key文件上传到服务器建议统一放在/usr/local/nginx/conf/cert/或者/etc/nginx/cert/这样的目录下方便后续维护。打开Nginx配置文件在server块里加这么几行server { listen 80; server_name www.example.com; # HTTP请求跳转到HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/nginx/cert/www.example.com.crt; ssl_certificate_key /etc/nginx/cert/www.example.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 其他站点配置 location / { root html; index index.html; } }配置完成运行nginx -t检查语法没问题再nginx -s reload重载。有几个配置细节值得单独讲HTTP 301跳转第一段server块的作用是把所有HTTP请求301跳转到HTTPS这条规则对SEO友好——搜索引擎会把权重集中到HTTPS的URL上。注意跳转时用的是$host$request_uri能保留原始域名和路径避免跳转后404。ssl_protocols只开启 TLSv1.2 和 TLSv1.3。TLSv1.0 和 TLSv1.1 有已知安全漏洞早就应该禁用。ssl_ciphers可以理解为加密套件的优先级顺序。上面的配置是安全性和兼容性的相对平衡选择如果你用的Web框架对加密算法有特殊要求可以再调整。5.3 Apache配置别漏了证书链文件Apache用户需要在配置文件里开启SSL模块。Ubuntu/Debian系统用a2enmod ssl启用CentOS的话在/etc/httpd/conf.d/ssl.conf里配置。关键配置项是三个VirtualHost *:443 ServerName www.example.com SSLEngine on SSLCertificateFile /etc/httpd/cert/www.example.com.crt SSLCertificateKeyFile /etc/httpd/cert/www.example.com.key SSLCertificateChainFile /etc/httpd/cert/root_bundle.crt /VirtualHost注意第三个参数SSLCertificateChainFile。这是根证书和中间证书链文件很多人会漏配。不配的话有些浏览器能正常访问有些会报 NET::ERR_CERT_AUTHORITY_INVALID因为浏览器无法从你的证书回溯到受信任的根证书。如果你下载的压缩包里没有单独的root_bundle.crt可以检查一下证书文件末尾是不是已经包含了整条链有些打包方式会把根证书链直接拼在主证书后面。5.4 Tomcat配置与证书格式转换cer转pfx、pfx转jksTomcat和其他服务器不太一样它默认不直接读取crt和key文件而是要求使用JKS或PKCS#12格式的密钥库文件。腾讯云下载包里已经把Tomcat格式的文件准备好了——一个.jks文件或.pfx文件附带的还有一个密码文件。如果你拿到的服务器格式和Tomcat要求的不匹配需要自己转换。最常见的是把crt/key转换成pfx或jks。步骤其实也不复杂用openssl加上JDK自带的keytool工具就能完成cer/crt 转 pfxopenssl pkcs12 -export \ -in yourcertificate.crt \ -inkey yourprivate.key \ -out yourcertificate.pfx \ -name tomcat \ -passout pass:你的密码pfx 转 jkskeytool -importkeystore \ -srckeystore yourcertificate.pfx \ -srcstoretype PKCS12 \ -destkeystore yourcertificate.jks \ -deststoretype JKS \ -srcstorepass 你的密码 \ -deststorepass 你的密码转换完就把.jks文件放到Tomcat的conf目录下然后改server.xml。Tomcat 8.5及以上版本推荐用org.apache.coyote.http11.Http11NioProtocol协议配置如下Connector port443 protocolorg.apache.coyote.http11.Http11NioProtocol maxThreads200 schemehttps securetrue SSLEnabledtrue keystoreFileconf/yourcertificate.jks keystorePass你的密码 clientAuthfalse sslProtocolTLS/低版本Tomcat如7.0以下要改protocol通常用org.apache.coyote.http11.Http11Protocol。这个细节如果不对Tomcat启动会直接报错说找不到协议处理器。5.5 部署完之后怎么判断到底成功没有证书部署完先用命令检查端口监听情况ss -tlnp | grep -E :443|:8443看到443端口处于LISTEN状态说明Web服务已经正常监听HTTPS请求。接着用curl验证证书信息curl -I https://www.example.com返回正常的HTTP状态码且没有证书相关报错基本就算成了。如果还想要更细的验证可以查看证书详细信息echo | openssl s_client -connect www.example.com:443 2/dev/null | openssl x509 -noout -dates这个命令会打印证书的生效时间和过期时间方便你了解证书当前状态。6. 证书过期、免费续期与常见问题排查6.1 如何查看SSL证书过期时间免费证书有效期短过期时间一定要做到心里有数。提供几种查看方式方式一在线检测。访问类似myssl.com这类在线检测平台输入域名它会告诉你证书的签发时间、过期时间、加密套件配置评级等信息。这种方式最直观不用登录服务器。方式二命令行查看。在Linux服务器上执行echo | openssl s_client -connect www.example.com:443 2/dev/null | openssl x509 -noout -enddate输出格式是notAfterJul 1 00:00:00 2025 GMT这就是过期时间。方式三在腾讯云控制台看。SSL证书列表页里每一张证书都会显示到期时间还能设置到期提醒。建议把提醒提前到到期前30天这样有充足的时间处理续期。6.2 腾讯云免费SSL证书的续期流程和几个坑很多人误以为免费证书到期后会自动续期完全不是这样。腾讯云免费SSL证书续期其实等于再申请一张新证书流程跟首次申请完全一样控制台里申请新证书、做DNS验证或文件验证、签发后重新下载、替换服务器上的旧证书文件、重载Web服务。续期最容易踩的坑有三个忘记替换服务器上的旧文件。证书申请成功和新证书部署是两个动作先下载新证书到服务器再修改配置指向新文件如果文件名和时间戳没变直接覆盖旧文件也行最后reload。不少人觉得我已经申请了新证书网站应该自动就HTTPS了结果过期后一访问浏览器直接报不安全。TXT记录旧值残留。DNS验证时加的TXT记录验证成功后如果你没有清理掉旧记录下次申请新证书时会遇到冲突——有些DNS平台不允许存在两条相同的记录名。续期时先删掉旧的TXT记录再添加新的。旧证书还未到期就不要提前删配置。新旧证书替换有一个平滑过渡期推荐的做法是新证书签下来并验证配置无误后再删掉旧的证书文件。别一听说要续期就急吼吼地先把旧配置删了配置出问题连应急回退的机会都没有。6.3 部署后常见问题浏览器报警、证书链不完整、混合内容浏览器提示不安全或证书无效先确认访问时用的域名和你证书上绑定的域名是否一致。证书绑定的是www.example.com你访问example.com那浏览器当然不认。解决办法是配置好301跳转把example.com统一跳转到www.example.com或者反过来。提示证书链不完整 incomplete chain这个多出在Apache或其他需要手动拼接证书链的环境。IOS和Android的浏览器对证书链校验极其严格你只配了叶子证书没配中间证书就会报这个问题。解决方式是按Nginx打包法的crt文件已经带链、Apache要单独配SSLCertificateChainFile的规则逐一排查。页面加载后锁标志消失显示混合内容证书本身没问题但你的网页里还引用了HTTP协议的图片、CSS或JS资源。浏览器策略要求HTTPS页面里的所有资源也都必须是HTTPS否则就降级为不安全。排查方式打开浏览器开发者工具F12在Console面板里看有没有被block的资源请求找到后把资源链接改成HTTPS或换成相对路径。如果你的网页是WordPress或其他PHP程序构建的检查数据库里是否还有写死HTTP开头的URL一般直接在后台用插件把URL替换成HTTPS版本。6.4 后续还能做什么HTTPS做对之后的进阶方向证书装上、HTTPS跑通了这只是第一步。你可以考虑把所有HTTP流量都301跳转到HTTPS上面Nginx配置已经包含了再用免费CDN把网站套上一层加速和防御能力——这时候证书要重新配置因为CDN回源有一个CNAME解析过程建议先用在线工具规划好CDN和证书的配合方式别等部署了发现回源证书报错。也可以给子域名比如img.example.com、api.example.com申请独立证书避免浏览器对子域名发出HTTPS请求时因证书不匹配而报警。最后分享一个个人经验定期把证书文件归档到额外的存储位置比如对象存储或git私有仓库同时把私钥密码记录在密码管理器里。这看起来是小事但万一某天不小心reset了服务器你又不在电脑前手里没备份的话整个站点就只能光着跑HTTP了那滋味不好受。养成习惯每次申请完新证书先归档这比任何调试技巧都重要。
返回列表