达耳闻 发表于 2025-3-2 15:42:16

让网站的SSL证书评分得到A+

1、开启TLS 1.3
当我们申请SSL证书后,如果没有TLS 1.3,可以在 ssl_protocols 这一行后面加上 TLSv1.3。虽然开启了TLS 1.3,不过这样是不行的。因为服务器支持TLS 1.1,所以在网站配置文件中,删除TLS 1.1,只保留TLSv1.2 TLSv1.3即可。

2、添加DNS的CAA
什么是 CAA?
CAA(Certification Authority Authorization,证书颁发机构授权)是一项降低 SSL 证书错误颁发的控制措施,由互联网工程任务组(IETF)批准列为 IETF RFC6844 规范。2017年3月,CA 浏览器(CA/Browser Forum)论坛投票通过187号提案,要求 CA 机构从2017年9月8日起执行 CAA 强制性检查。

CAA 的作用
域名所有者通过设置 CAA 解析记录来授权指定的 CA 机构为其颁发 SSL 证书,同时 CA 机构根据规范要求,在颁发 SSL 证书时会强制性检查域名 CAA 记录,如果检查发现未获得授权,将拒绝为该域名颁发 SSL 证书,从而防止未授权的 SSL 证书错误颁发,规避安全风险。如果域名所有者没有为其域名设置 CAA 记录,那么任何 CA 机构都可以为其域名颁发证书。

为什么要设置 CAA ?
据权威部门统计,全球约有上百个证书颁发机构(CA)有权发放 SSL 证书,以证明您网站的身份,但是证书颁发机构由于某些原因,往往会被浏览器列入 “黑名单”,并被公开宣布将不再信任其签发的 SSL 证书。由于任何 CA 都可以为任何域名颁发证书,这使得 PKI 生态系统较为脆弱。因此,当您的网站部署了不被浏览器信任的证书颁发机构所颁发的证书,用户访问时,部分浏览器将提示 “HTTPS 证书不受信任”,影响您的业务正常使用。

使用CAA记录自动在线生成来搞定。
在线工具:https://sslmate.com/caa/
CAA 是 DNS 服务器下发的记录,所以首先要 DNS 服务器支持才行。
首先添加 DNS 解析(A)记录,指向你服务器的外网 IP。
然后添加 CAA 记录。

主机记录:填写子域名。例如,添加 www.thedailylives.com 的解析,您在 “主机记录” 处填写 “www” 即可。如果只是想添加 thedailylives.com 的解析,您在 “主机记录” 处选择 “@” 即可。
记录类型:选择 “CAA”。
线路类型:选择 “默认” 类型,否则会导致部分 CA 机构无法进行认证。
记录值:CAA 记录的格式为: ,是由一个标志字节的 和一个被称为属性的 -(标签-值)对组成。您可以将多个 CAA 字段添加到域名的 DNS 记录中。


字段
子字段
说明

flag
-
可填写0或128,用于标志认证机构。默认情况下填写0,表示如果颁发证书机构无法识别本条信息,进行忽略。

tag
issue
CA 授权单个证书颁发机构发布的任何类型域名证书。

issuewild
CA 授权单个证书颁发机构发布主机名的通配符证书。

iodef
CA 可以将违规的颁发记录 URL 发送给某个电子邮箱。

value
-
CA 的域名或用于违规通知的电子邮箱。

权重:不填写,可忽略。
MX 优先级:不填写,可忽略。
TTL:默认600秒是最常用的,不用修改。

3、检验 DNS CAA 是否生效
使用 SSL Server Test 可以很方便的检验你的域名是否启用了 DNS CAA。

下面还有对应证书是否匹配当前 DNS CAA 记录的提示。

可通过dig 命令方式检查已添加的 CAA 记录:
Xshell软件连接网站,然后用dig命令检查CAA记录。
dig thedailylives.com CAA
返回值为空或包含 0 issuewild "thedailylives.com" 和 0 issue "thedailylives.com" 即为正常。

4、设置HSTS Preload
在nginx服务器 HTTPS 配置的 server 块中加上以下代码:
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

如果你发现直接添加在 server 块中无效的情况,你可以试试直接插入到 location ~ *php 内:
1 location ~ [^/]\.php(/|$) {
2   add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
3 }
配置保存后重启 Nginx 服务。

测试HSTS是否生效,直接打开Chrome查看网络,就可以看到头部已经包含了HSTS信息了。


加入HSTS Preload List,进入https://hstspreload.org/官网,输入你的域名,然后检测结果会告诉是否符合加入HSTS Preload List,没有问题的话勾选确定。其中有个警告说是要让默认不带子域名的HTTP不用启用HSTS标头的:
Warning: Unnecessary HSTS header over HTTP
The HTTP page at http://thedailylives.com sends an HSTS header. This has no effect over HTTP, and should be removed.
这个警告不用理会,不影响提交结果。HSTS Preload List审核的时间有长有短,一旦提交后你就只能等待。加入到了HSTS Preload List后,你可能还需要等待1-2月,待新版本的Chrome和Chromium、Firefox、IE等发布后,你的域名算是正式被各大浏览器承认并强制使用Https访问了,你可以在Chrome浏览器的地址框中输入“chrome://net-internals/#hsts”查看。

如何撤销HSTS Preload List,https://hstspreload.org/removal/
官方也提供了一个申请删除HSTS Preload List,不过需要注意的是撤销HSTS Preload List和加入HSTS Preload List一样,花费的时间可能需要几个月以上,所以申请HSTS Preload List前一定要谨慎。

如果不开启HSTS Preload无法得到A+,开不开HSTS Preload自己斟酌,不过开启HSTS Preload可以加快网站的访问速度,如果不需要就删除那段代码即可。







页: [1]
查看完整版本: 让网站的SSL证书评分得到A+