前言
要想让网站启用 HTTPS,就必须从证书颁发机构(CA)获得 SSL/TLS 证书。通常来说,SSL/TLS 证书需要付费购买,但是也有例外,例如 Let's Encrypt,想了解更多内容,检索关键字「Let's Encrypt」。本文介绍如何配置 Cloudflare 边缘证书,注意该证书只被 Cloudflare 信任,所以在不开启 Cloudflare 严格模式下访问网站浏览器会给警告。
从 Cloudflare 生成边缘证书
建议直接从官方文档开始,Origin CA certificates,本文只做一个简单的浓缩,假设你已将域名的 NS 服务器设置到 Cloudflare,即此域名受 Cloudflare 管理。
- 进入域名管理页:[Dashboard] > Websites > [你的域名]
- 生成边缘证书:[域名管理页] > SSL/TLS > Origin Server > Create Certificate > Create
完成上述步骤,就创建好了边缘证书。注意选择匹配的证书格式:
服务器 | 证书类型 |
---|---|
OpenSSL-based (Apache, Nginx) | PEM |
Windows, Apache Tomcat | PKCS#7 |
我们使用的服务器是 Nginx,应该选择 PEM 格式,然后分别保存边缘证书(Origin Certificate)和密钥(Private Key)。
注意,密钥只显示一次,务必保存好;点击复制然后粘贴可能导致文本尾行出现空行,务必删除。
Nginx 配置
假设,你现在将边缘证书和密钥以文本的形式存储在服务器硬盘的某个位置,在虚拟主机配置文件内添加 ssl_certificate
、`ssl_certificate_key 这两个字段,分别指向边缘证书和密钥的文件地址。
server {
# 添加下面两个字段以完成边缘证书配置
ssl_certificate_key {SSL PRIVATE KEY};
ssl_certificate {SSL CERTIFICATE};
}
为让源服务器更加安全,添加 ssl_client_certificate
、ssl_verify_client
字段以验证Nginx 是否在和 Cloudflare 通信,此法导致用户直接访问源服务器返回 400 错误,需要在 Origin Server 页开启 Authenticated Origin Pulls 选项。ssl_client_certificate
指向 Cloudflare 证书。
server {
# 需要开启 Authenticated Origin Pulls
ssl_client_certificate {Cloudflare Certificate};
ssl_verify_client on;
}
附带 Cloudflare 证书,直接复制保存下来,将文件地址填入 ssl_client_certificate 字段。
-----BEGIN CERTIFICATE-----
MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNV
BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmln
aW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
cm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkx
MDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNV
BAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYD
VQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQD
ExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI
42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20e
ihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBw
hLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoY
QSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3
Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRn
aL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5
lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGR
PpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5Hh
CvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa
+4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMB
AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud
DgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REz
alfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1
QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3IS
zVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoX
VcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz
6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z
0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc
5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/
fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2j
bA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGm
iYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07F
AnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tM
fVQ6VpyjEXdiIXWUq/o=
-----END CERTIFICATE-----
1 条评论
are you sick? long time no see you.