于北京时间10月27号23:20更新的Nginx 1.19.4,更新了3个特性,内容如下:
Feature: the "ssl_conf_command", "proxy_ssl_conf_command", "grpc_ssl_conf_command", and "uwsgi_ssl_conf_command" directives.
Feature: the "ssl_reject_handshake" directive.
Feature: the "proxy_smtp_auth" directive in mail proxy.
其中http_ssl_module新增两个方法:ssl_conf_command
和ssl_reject_handshake
;mail_proxy_module新增了proxy_smtp_auth
。
ssl_conf_command可以设置任意的OpenSSL配置,需要OpenSSL 1.0.2+,另外注意修改OpenSSL配置后可能会导致意外错误。
我觉得比较有用是在http作用域使用:
ssl_conf_command Options PrioritizeChaCha;
等效于SSL_OP_PRIORITIZE_CHACHA,详见传送门OpenSSL SSL_CONF_cmd。
最早有nginx_auto_using_PRIORITIZE_CHACHA.patch这个Patch,但其实我很早就删掉这个Patch,通过服务端配置让客户端自己选择了。不过现在就一行参数,何乐不为。
有了ssl_reject_handshake这个参数,再也不需要strict-sni.patch了。
本质需求就是为了当机器人或者奇怪的人类通过HTTPS访问你的IP时不暴露证书,也就不会暴露域名。
官方文档给了个例子如下,在以下配置中,除example.com以外,其他域名的SSL握手将被拒绝。(返回UNRECOGNIZED NAME,Chrome提示ERR_SSL_UNRECOGNIZED_NAME_ALERT)
server {
listen 443 ssl;
ssl_reject_handshake on;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key;
}
proxy_smtp_auth主要是通过AUTH指令可以在SMTP后端上启用或禁用用户身份验证。
注意,如果使用了XCLIENT,则XCLIENT指令不会发送LOGIN参数。
刚刚严谨的测试了下,发现使用ssl_reject_handshake后,TLS 1.3协商不起来,握手握着握着降级了。。。
经Nginx答复,这是个已知问题,是OpenSSL的锅。详细见传送门。
OpenSSL准备Merge修复PR了,介时Nginx with openssl就没问题了。
2020/12/02更新。
OpenSSL已经合并了PR。
下一1.1.1版本可以获得修复。主dev分支(master)已支持。
2020/12/10补充。
转载请注明转自:kn007的个人博客的《Nginx 1.19.4新特性推荐》
升级到nginx-1.19.4
@墙头杏花: 早就升级了
拖到今天水一篇
@kn007: 刚刚在博客上设了ssl_reject_handshake on,CDN直接返回了502,不知道是什么情况
@墙头杏花: 抓下包看看
@kn007: 很专业了,不水,我才是最水的一个

又水了一篇博客
@peter: 那必须的,顺便踩了个坑,提醒下大家。
不暴露证书、域名这个特性挺好的
@心灵博客: 你这还在http呢。。确实蛮快
@kn007: 一个博客而已,没啥价值的东西,弄个ssl还麻烦,虽然说可自动部署自动续期,但也会出问题不是吗。http挺好
/update@kn007
@Xaver:
网站打开速度很快,还以为是静态博客呢
@天一生水: 普普通通WordPress
@天一生水: 在你那留言,变成匿名了
ssl_reject_handshake 踩了一波坑
完全体:
server {
listen 443 ssl http2;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_reject_handshake on;
ssl_session_cache shared:le_nginx_SSL:50m;
ssl_session_timeout 1440m;
}
首先需要指明ssl_protocols,否则导致ssllib发现不了TLSv1.3和启用了TLSv1,等级直接降成B
然后还要指定ssl_session_cache,不然导致Session resumption (caching)验证失败
@Carter Li:
这样子。。说起来openssl有PR,貌似直接patch是能解决的。我还没去试。
你这个我晚点试一下看看。。
但我记得tlsv1应该没启用啊。。。晚点试试。
谢谢提醒
@Carter Li: 哦对了,我是有全局指定了ssl_protocols和ssl_session_cache。。
要另在server段下做?
有TG的话,兄弟可以来找下我,同名。
快成主机更新日志了。
@郑永: 并不是。。值得一提的才会说