你的服务器没穿裤子?揭秘Cloudflare“自带”SSL证书的骚操作!
嘿,各位高一技术宅们!今天咱们来聊一个让无数站长懵逼的问题:明明我的服务器是小霸王学习机改的,纯HTTP裸奔,怎么一接入Cloudflare,网站就莫名其妙戴上“小绿锁”了?这证书是天上掉下来的吗?为啥用了Cloudflare自带的SSL证书啊?怎么实现的啊?
别急,今天我们就用拆机房的热情,把这层窗户纸捅破!
一、首先,忘掉“服务器=网站”这个老古董观念
在CDN的世界里,你的源站服务器已经不是直接面对网友了。想象一下,Cloudflare就像一个超级敬业的保安(或者说反向代理),所有访客要先过保安这一关。
这时候,神奇的事情发生了:一次访问,其实发生了两次连接!
- 连接A:网友小明的浏览器 <---> Cloudflare的保安(边缘节点)
- 连接B:Cloudflare的保安 <---> 你家那台藏着源码的小霸王服务器(源站)
理解了这“双重人格”的架构,咱们就能聊证书的事了。
二、所以,证书到底是谁的?—— “边缘证书”参上!
你看到的那个“小绿锁”,是作用在连接A上的。这个证书叫 “边缘证书” 。
当你把域名托管给Cloudflare(也就是把NS记录改到它家),神奇的事情就发生了:Cloudflare会自动变身成一个“证书批发商”。它会代表你去跟全球知名的证书颁发机构(CA),比如Let‘s Encrypt、DigiCert,说:“嘿,给我哥们儿的域名(比如 your-blog.com)发个证书!”
Cloudflare怎么证明它拥有这个域名?通过DNS验证!它在你添加域名的時候,就让你改DNS服务器了,这就是最有力的“房产证”。一旦验证通过,CA就会签发证书。Cloudflare拿到证书后,会把它部署到全球所有的边缘节点上 。
所以,当你访问网站时,Cloudflare的边缘节点会直接掏出这张“Cloudflare签发”的证书给你看,压根不会去麻烦你的小霸王服务器。
三、保安和你家服务器的“秘密暗号”—— “源站证书”了解一下
连接A搞定了,那连接B呢?难道保安和小霸王之间也走不安全通道?当然不是!
这就引出了第二个概念:源站证书 。Cloudflare很贴心地提供了一个功能:让你在它后台免费生成一个长达15年的源站证书 。你只需要把这个证书和私钥安装到你的小霸王服务器(Nginx/Apache)上。
这样一来:
· 保安(Cloudflare) 手里有这个证书的公钥。
· 小霸王(源站) 手里有这个证书的私钥。
当保安需要回源抓取数据时,它会和小霸王建立一个加密通道。由于这个证书也是Cloudflare自己签发的(或者它认可的),在 “Full (Strict)” 模式下,保安会严格验证这个证书,确保对面是它认识的那个小霸王,而不是被劫持的冒牌货 。
这就相当于保安和你家服务器之间有了一套专属的“秘密暗号”,外人听不懂也看不见。
四、终极解密:你到底该选哪种模式?
现在,我们来配置Cloudflare的SSL/TLS模式,这直接决定了“双重人格”如何工作 :
- Off(关闭):作死模式。连接A和连接B都是裸奔。
- Flexible(灵活):常见误区! 连接A有证书(看着安全),但连接B是裸奔。相当于保安穿着防弹衣,却让小弟光着脚去送情报。千万别选这个!
- Full(完全):连接A有证书,连接B也会加密。但保安不验证小霸王的证书是不是真的,只要有证书就行。如果小霸王用的是自签名过期证书,它也认。
- Full (Strict)(完全严格):正确姿势! 连接A有证书,连接B不仅加密,保安还会严格验证小霸王的证书是否有效、是否由受信任的CA签发。这就是我们上面说的,配合Cloudflare生成的源站证书使用的最佳模式 。
- Strict(严格——仅限企业):土豪模式,多了更多高级验证。
五、灵魂配图时间
为了方便理解,我灵魂手绘了一张图:
你的浏览器 (https://你的博客.com)
│
│ 连接A (使用 Cloudflare 边缘证书加密)
▼
┌──────────────────────────────────────┐
│ Cloudflare 全球网络 (保安) │
│ - 持有 边缘证书 (给你看的) │
│ - 也持有/信任 源站证书 (暗号本) │
└──────────────────────────────────────┘
│
│ 连接B (使用 源站证书加密)
│ 只有在 Full(Strict) 模式下才验证
▼
你的源站服务器 (IP: 1.2.3.4)
(安装了 Cloudflare 生成的 源站证书)
总结一下
用了Cloudflare自带证书,并不是你的服务器变牛了,而是Cloudflare在你和服务器之间当起了“翻译”和“保镖”。它用自己的边缘证书保护你到它这一段,用可选的源站证书保护它到服务器那一段。
所以,别再纠结为啥服务器没证书也能有“小绿锁”了,那是因为Cloudflare替你穿上了裤子,还是两条!
快去后台把你的SSL/TLS模式改成 Full (Strict),然后生成个源站证书装到服务器上吧!这才是完全体!
参考文档:
· Cloudflare SSL/TLS 核心概念
· Cloudflare + Heroku SSL 工作原理详解
· Cloudflare TV 访谈:SSL/TLS 证书的工作原理

Comments NOTHING