|
SSL证书不是“申请”来的,准确说,是签发机构给你签出来的。你要做的只有两件事:证明这个域名是你的,然后让CA(证书颁发机构)把公钥和你的域名绑在一起签个名。整个过程快的话十分钟,慢的话一两天,取决于你选哪种验证方式。 我去年给一个内部测试站配HTTPS,图省事用了Let's Encrypt的免费证书。跑了一条certbot命令,自动验证域名、自动签发、自动续期,全程没碰过浏览器。但如果是企业官网或者电商站,免费证书的90天有效期和相对有限的信任链支持,可能会让运维团队多不少活。所以选哪条路,先看用途。 域名验证:三种方式,复杂度差很多 CA需要确认你控制着这个域名。常见的有三种: 文件验证——CA给你一个文件,你放到网站根目录的/.well-known/acme-challenge/下,它去访问确认。适合有服务器权限的人,Let's Encrypt默认走这条路。 DNS验证——CA给你一条TXT记录,你加到域名的DNS解析里。适合没有Web服务、或者需要签发泛域名证书(*.example.com)的情况。泛域名只能用DNS验证,这是硬规则。 邮箱验证——CA往admin@、webmaster@、hostmaster@等几个固定前缀的邮箱发确认信。以前很流行,现在用得少了,因为很多小公司根本没有这些邮箱。而且邮箱验证通常只能签单域名,泛域名不行。 文件验证和DNS验证都可以自动化。邮箱验证基本靠人工,适合完全不懂技术的小白用户——前提是你的域名注册邮箱得是能收信的。 选CA:免费和付费的边界在哪 Let's Encrypt是最大的免费CA,签发的证书被所有主流浏览器信任。缺点是90天有效期,且不提供OV(组织验证)或EV(扩展验证)证书。也就是说,浏览器地址栏不会显示你公司的名字。对普通博客、个人项目、内部系统,完全够用。 付费CA像DigiCert、Sectigo、GlobalSign,提供1-2年有效期的证书,以及OV/EV类型。OV证书需要提交营业执照等材料,CA人工审核,通常1-3个工作日。EV证书审核更严,但现在浏览器对EV的展示已经弱化了——Chrome从2019年起就不在地址栏单独显示公司名了。所以除非有合规要求,EV的性价比在下降。 国内云厂商(阿里云、腾讯云)也提供免费DV证书,有效期通常1年,但签发速度有时比Let's Encrypt慢,因为要走国内审核流程。如果你的服务器在国内,用云厂商的证书在续期和部署上可能更顺手,毕竟控制台点几下就行。 签发之后:别把证书当一次性任务 很多人签完证书、配好Nginx就完事了。然后一年后网站突然打不开,浏览器报证书过期。这种事我见过不止一次。 证书是消耗品。Let's Encrypt的90天有效期意味着你至少每两个月要续一次。certbot可以配cron自动续,但前提是验证方式得是自动化的——DNS验证如果用的是手动添加TXT记录,自动续期就断了。所以一开始就要想好:你是手动管,还是用acme.sh、certbot这类工具全自动管。 另外,证书链要配全。有些CA给的是中间证书+根证书的链文件,Nginx里ssl_certificate要指向包含完整链的PEM文件,否则部分老设备会报证书不受信任。这个坑我踩过,安卓4.x的机器上直接白屏。 还有,私钥别泄露。生成CSR的时候私钥留在自己服务器上,只把CSR发给CA。如果CA让你把私钥也发过去,换一家。 最后说个实际的:如果你只是想让网站有个小锁图标,Let's Encrypt加certbot自动续期,半小时搞定,之后基本不用管。如果你需要给客户展示公司身份,或者有等保、支付合规要求,那就走付费OV证书,准备好营业执照和法人信息,等CA打电话核实。两条路都通,看你要什么。 |