kn007的个人博客
♥ You are here: Home > 软件与网络 > VPS > Nginx 1.19.4新特性推荐

Nginx 1.19.4新特性推荐

by | 18 Comments

于北京时间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_commandssl_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的锅。详细见传送门

转载请注明转自:kn007的个人博客的《Nginx 1.19.4新特性推荐

donate
有所帮助?

Comments

18 Comments立即评论
  1. 升级到nginx-1.19.4 ;-)

    1. MOD回复

      @墙头杏花: 早就升级了 :oops: 拖到今天水一篇

    2. @kn007: 刚刚在博客上设了ssl_reject_handshake on,CDN直接返回了502,不知道是什么情况 :cry:

    3. MOD回复

      @墙头杏花: 抓下包看看 :oops:

    4. LV5回复

      @kn007: 很专业了,不水,我才是最水的一个 :oops: :oops: :oops:

  2. LV1回复

    又水了一篇博客 :|

    1. MOD回复

      @peter: 那必须的,顺便踩了个坑,提醒下大家。 :oops:

  3. 不暴露证书、域名这个特性挺好的

    1. MOD回复

      @心灵博客: 你这还在http呢。。确实蛮快 :lol:

    2. @kn007: 一个博客而已,没啥价值的东西,弄个ssl还麻烦,虽然说可自动部署自动续期,但也会出问题不是吗。http挺好 :smile:

  4. 回复

    /update@kn007

    1. MOD回复
  5. 网站打开速度很快,还以为是静态博客呢

    1. MOD回复

      @天一生水: 普普通通WordPress

    2. MOD回复

      @天一生水: 在你那留言,变成匿名了 :grin:

  6. 回复

    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)验证失败

    1. MOD回复

      @Carter Li: :o 这样子。。说起来openssl有PR,貌似直接patch是能解决的。我还没去试。
      你这个我晚点试一下看看。。
      但我记得tlsv1应该没启用啊。。。晚点试试。
      谢谢提醒

    2. MOD回复

      @Carter Li: 哦对了,我是有全局指定了ssl_protocols和ssl_session_cache。。
      要另在server段下做?

      有TG的话,兄弟可以来找下我,同名。

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif