您的服务器应该使用哪种证书?
任何连接到您服务器的人都能看到它的证书,因此一次探测就可能暴露服务器。如果可以,请使用受信任的证书。如果做不到,诚实的自签名证书仍可能比虚假的证书更好。
每种证书向网络透露了什么
-
受信任
您域名的有效证书,由证书颁发机构签名。
看起来就像普通网站或服务。
-
自签名
未经任何权威机构签名、使用虚构名称的证书,新安装的服务器上就是这种证书。
看起来像私有服务器,例如路由器或测试机。
-
无效
使用真实网站名称的自签名证书,但所在的 IP 地址并不属于该网站。
看起来像一台冒名顶替的服务器。
为什么自签名证书可能胜过无效证书
浏览器会拒绝这两种证书。区别在于它们各自声称了什么。
虚构名称什么也没有声称,因此也无从拆穿。路由器、测试机和私有工具每天都在出示同类证书,网络如果把这类证书全部封锁,这些设备和工具也会一并被切断。
真实网站的名称则是任何人都能核实的声明:该网站有权威机构颁发的证书和自己的 IP 地址,而您的服务器两者都没有。普通服务器不会这样声称,因此网络封锁它毫无代价。
在仅凭名称作判断的网络上,真实网站的名称仍可能有用:这种证书在那里可能通过,而使用虚构名称的证书不能。如需尝试,可在受管服务器上或在独立服务器上添加这样的证书。
把自签名证书打扮得像真的一样没有意义。证书里的组织、有效期和扩展字段都改变不了什么,因为探测一眼就能看出没有权威机构为它签名。
如果可以,请注册一个域名
受信任的证书才是应对探测的根本办法,而且成本很低:域名很便宜,Let's Encrypt 的证书则是免费的。
请使用该域名下的主机名,例如 api.example.com。许多网站把 API 或文件放在单独的主机名下,这样的主机名会拒绝陌生访问者,您的服务器也一样,因此它看起来很普通。www.example.com 仍可由您自由使用,放您喜欢的任意网站,托管在哪里都可以。
不过,域名并不能让您的用户绕过已被封锁的地址,因为它仍指向同一台服务器。只有反向代理才能做到这一点。