做了小工具 —— docker-acme.sh ,简化了申请证书和更新证书的流程。希望它可以帮助正在使用 Let's Encrypt 证书的 V 友们免去一些痛苦。(每次证书到期,都挺折腾的,对吧?)
发现很多站的 HTTPS 不正确,再广播一个自己收集总结的 Nginx 的 HTTPS 配置。
推荐工具: SSL Server Test
愿大家的 HTTPS 都能配置成功。匿了。
1
inroading 2016-07-16 12:17:39 +08:00 1
头像真吓人
|
2
ivmm 2016-07-16 12:29:12 +08:00
仅仅只有 https 不够吧。
还要 DNSSEC |
3
anjunecha 2016-07-16 13:22:06 +08:00 1
看了一眼那个 https 配置感觉似乎有一些问题, spdy 不要用了,改成 http2 吧,另外 OCSP 装订那里,要做一个 ssl_stapling_verify ,以及你用的 8.8.8.8 的 resolver 对国内用户不太友好的,建议增加一个国内的 resolver
|
6
lhbc 2016-07-16 13:31:15 +08:00
1. nginx 1.9 以后已经不支持 SPDY 了,只能 HTTP/2
2. ssl_ciphers 里, ECDHE-ECDSA 应该优先于 ECDHE-RSA 。当然,没有 ECC 证书 ECDSA 就是白搭。如果用了 1.11 的新特性 双证书,那 ECDSA 必须优先 RSA 。 3. Strict-Transport-Security includeSubdomains 这种大坑,不详细说清楚,让别人随便配,那真是无底坑了 |
7
DT27 2016-07-16 13:33:09 +08:00
只用 apache 。。。
|
9
anjunecha 2016-07-16 13:55:50 +08:00 via iPhone
HSTS 是有点坑, lz 要谨慎配置,建议 lz 把 include Subdomains 这个配置字段去掉,如果子域需要的话每个子域单独配
|
10
m31271n OP |
13
McContax 2016-07-16 14:29:11 +08:00 via Android
我就问下,我区区一个博客站,真的有必要用 https 吗??遇到系统时间不对的还没法显示
|
14
ZE3kr 2016-07-16 14:32:06 +08:00
@m31271n 配置的话不同的 Nginx 和 OpenSSL 可能不同, Mozilla 有一套推荐,分为 Old 、 Intermediate 、 Modern ,看你需要的兼容性, Intermediate 就能够被评为 A+ 了。
https://mozilla.github.io/server-side-tls/ssl-config-generator/ nginx 1.10.0 | intermediate profile | OpenSSL 1.0.2g ( Ubuntu 16.04 就是这个) ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; 或者 CloudFlare 的配置 https://github.com/cloudflare/sslconfig/blob/master/conf ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; |
15
anjunecha 2016-07-16 14:33:37 +08:00 via iPhone
@m31271n ssl_cipher 这个不一定,看你的证书类型, nginx 版本,以及需要兼容的浏览器等等,你可以去 stackoverflow 上查一查
|
19
greatghoul 2016-07-16 16:00:05 +08:00
小哥你这东西好。
|
20
m31271n OP @greatghoul ;)
|
22
m31271n OP 坑在 `includeSubdomains`,如果开了这个,所有的子域都会使用 HTTPS 。
|
24
shiny 2016-07-16 17:19:08 +08:00
我之前也想把 acme.sh Docker 化,还有一个疑问是更新证书后如何通知 nginx reload configure?
|
25
dasenlin 2016-07-16 18:33:45 +08:00
@m31271n 请教楼主,看了楼主的配置文件, https 之间如何 301 呢,比如像 https://xxx.com 如何重定向到 https://www.xxx.com ,我有个开启 https 的站点无法这样跳转, http 之间倒是可以跳转
|
28
m31271n OP |
32
m31271n OP @shiny 不过,倒是想到了一个办法 —— 在 Nginx 容器中使用 inotifywait 这种文件状态检测工具来监测证书变化,证书一旦变化了就重载 Nginx 。(这个办法你觉得如何?)
|
33
wql 2016-07-16 20:44:25 +08:00 via Android
@m31271n 这个配置的标准名称,是 includeSubDomains 。注意, Domains 的 D 得大写(推荐配置)。
includeSubdomains 已经 deprecated 了 |
36
VmuTargh 2016-07-16 21:00:17 +08:00 2
HTTPS 怎么够,你还需要如下选项:
0.HSTS ,个人 HTTPS 站点必备,很多企业站也上线了 HSTS 。谷歌也搞了一个 HSTS Preload List ,任何被登记在这个 list 里面的站点会直接用 https 链接,避免 fallback 风险。当然这个列表 Firefox 、 Edge 也兹磁。 1.DNSSEC ,虽然我兔境内 DNSSEC 部署几乎等于没有,只有 CNNIC 一家。但有总比没有好, DNSSEC 本身就是用于对抗 DNS 污染的。不过需要用户操作系统还有 DNS 服务器兹磁。目前 DNSSEC 在大多数国别域名以及 gTLD 已经部署,各个根服务器组也已部署了 DNSSEC 兹磁。越来越多的域名注册商、 DNS 服务商开始提供 DNSSEC 的兹磁了。 2.HPKP ,这个东西用来防止伪造证书进行中间人攻击,通过 HPKP 头设置指定证书(可以包括域名证书、中间证书或者根 CA 证书)的 fingerprint ,来检验是否为此服务器使用证书,以避免中间人攻击。 3.DANE ,这个玩意其实和 HPKP 差不多,都是验证证书的机制,但是这个是基于 DNSSEC 的,实现不如 HPKP 优雅。但是适配范围更广。包括 TCP 、 UDP 等,不仅仅是 HTTPS 。所兹磁的 SSL 证书也不仅限定于正规 CA 签发的证书,也包括自签名证书。 4.Certificate Transperency ,这个被成为证书透明度的东西一直没搞懂是如何发挥作用的。但是据窝的观察,应该是判断证书是否可信的一个机制。当然, CT 依赖于 SCT 服务器…… 另外暴力膜一下…… BroncoTc : 网络上的 https 和 http 相比,加了一个 s 有什么用? http+1s 比 http 安全吗? 我不是运维工作者,但我见得多了,我觉得我作为一个贴膜专家兼前国家二级赛艇运动员,有必要跟你们分享一点网络协议方面的人生经验。 一个网站的安全呀,不仅需要在应用层面添加必要的防护,更要从网络协议层面上考虑架构的合理性。 毫无疑问, HTTPS 正是这样一种既兼顾了应用层面的奋斗,又考虑了架构合理性的新理念,它代表了先进生产力的发展要求,代表了先进文化的发展方向,代表了最广大码农的根本利益。 所以,一个没有+1s 的网站,可能被运营商劫持,可能被黑客攻击,可能有很多种不幸的可能。但是当网站+1s 之后,一切烦恼就结束了。用上海知名气象学家徐嘉诰的话说就是,本来天气预报今天有黑客攻击, https 一来,万里无云。 不知道你想过没有,为什么程序员天天加班到没时间,但在续命的问题上却有莫大的热情呢?因为他们真切的体会到了+1s 的好处 http=( h ) a ( t ) oo young ( t ) oo sim ( p ) le ? |
40
Him 2016-07-17 12:30:12 +08:00 2
小哥好厉害
|
41
lan894734188 2016-07-17 19:12:00 +08:00 via Android
很好奇为什么是 A-
|
42
Pseric 2016-07-17 23:52:57 +08:00
其实用 CloudFlare 很无痛没烦恼,只是一般网站仍需要去处理路径上的问题。
|
43
m31271n OP @lan894734188 查看 SSL Server Test 的结果,看看如何修复。
|
44
2025 2016-07-20 09:39:14 +08:00
他的官网: https://letsencrypt.org/ 的证书为何不是自己的?
|