tlsexternal

listener.ssl.external

TypeDefault
string0.0.0.0:8883
说明

配置名称为 external 的 SSL 监听器。

listener.ssl.external.acceptors

TypeDefault
integer16
说明

监听器的接收池大小。

listener.ssl.external.max_connections

TypeDefault
integer102400
说明

监听器允许的最大并发连接数量。

listener.ssl.external.max_conn_rate

TypeDefault
integer500
说明

监听器允许的最大接入速率。单位:个/秒。

listener.ssl.external.active_n

TypeDefault
integer100
说明

监听器持续接收 TCP 报文的次数。

listener.ssl.external.zone

TypeDefault
stringexternal
说明

监听器所属的配置组 (Zone)。

listener.ssl.external.access.1

TypeDefault
stringallow all
说明

监听器的 ACL 规则列表。它用于设置连接层的白/黑名单。

例如:

allow all:表允许所有的 TCP 连接接入。 allow 192.168.0.0/24:表允许网络地址为 192.168.0.0/24 的 TCP 连接接入。

同时,该配置可配置多条规则:

  1. listener.ssl.external.access.1 = deny 192.168.0.1
  2. listener.ssl.external.access.2 = allow all

listener.ssl.external.rate_limit

TypeDefault
string-
说明

监听器的速率限制。格式为 <limit>,<duration>

listener.ssl.external.proxy_protocol

TypeOptional ValueDefault
enumon, off-
说明

监听器是否开启 Proxy Protocol 的支持。

如果 EMQ X 集群部署在 HAProxy 或 Nginx 后,且需要拿到客户端真实的源 IP 地址与端口,则需打开此配置。

Proxy Protcol 参考: https://www.haproxy.com/blog/haproxy/proxy-protocol

listener.ssl.external.proxy_protocol_timeout

TypeDefault
duration-
说明

设置 Proxy Protocol 解析的超时时间。如果该时间内没收到 Proxy Protocol 的报文,EMQ X 会关闭其连接。

listener.ssl.external.tls_versions

TypeDefault
stringtlsv1.2,tlsv1.1,tlsv1
说明

指定服务端支持的 SSL 的版本列表。详情请参见 http://erlang.org/doc/man/ssl.html

listener.ssl.external.handshake_timeout

TypeDefault
duration15s
说明

指定 SSL 握手过程的超时时间。

listener.ssl.external.keyfile

TypeDefault
stringetc/certs/key.pem
说明

指定 SSL 的私钥文件 (PEM)。

listener.ssl.external.certfile

TypeDefault
stringetc/certs/cert.pem
说明

指定 SSL 的证书文件 (PEM)。

listener.ssl.external.cacertfile

TypeDefault
stringetc/certs/cacert.pem
说明

指定 SSL 的 CA 证书文件 (PEM)。

listener.ssl.external.dhfile

TypeDefault
stringetc/certs/dh-params.pem
说明

若使用 Ephemeral Diffie-Helman 算法,指定算法使用的 key 文件。

listener.ssl.external.verify

TypeOptional ValueDefault
enumverify_peer, verify_noneverify_peer
说明

指定握手过程中是否校验客户端。

listener.ssl.external.fail_if_no_peer_cert

TypeOptional ValueDefault
enumtrue, falsefalse
说明

SSL 握手过程中若客户端没有证书,是否让握手失败。

listener.ssl.external.ciphers

TypeDefault
stringECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-DES-CBC3-SHA,ECDH-ECDSA-AES256-GCM-SHA384,ECDH-RSA-AES256-GCM-SHA384,ECDH-ECDSA-AES256-SHA384,ECDH-RSA-AES256-SHA384,DHE-DSS-AES256-GCM-SHA384,DHE-DSS-AES256-SHA256,AES256-GCM-SHA384,AES256-SHA256,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,ECDH-ECDSA-AES128-GCM-SHA256,ECDH-RSA-AES128-GCM-SHA256,ECDH-ECDSA-AES128-SHA256,ECDH-RSA-AES128-SHA256,DHE-DSS-AES128-GCM-SHA256,DHE-DSS-AES128-SHA256,AES128-GCM-SHA256,AES128-SHA256,ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,DHE-DSS-AES256-SHA,ECDH-ECDSA-AES256-SHA,ECDH-RSA-AES256-SHA,AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,DHE-DSS-AES128-SHA,ECDH-ECDSA-AES128-SHA,ECDH-RSA-AES128-SHA,AES128-SHA
说明

指定服务端支持的密码套件。

listener.ssl.external.psk_ciphers

TypeDefault
stringPSK-AES128-CBC-SHA,PSK-AES256-CBC-SHA,PSK-3DES-EDE-CBC-SHA,PSK-RC4-SHA
说明

若使用 PSK 算法,指定服务端支持的 PSK Cipher 列表。注意 ‘listener.ssl.external.ciphers’ 和 ‘listener.ssl.external.psk_ciphers’ 只能配置一个。

listener.ssl.external.secure_renegotiate

TypeOptional ValueDefault
enumon, offoff
说明

指定在客户端不遵循 RFC 5746 的情况下,是否拒绝 renegotiation 请求。

listener.ssl.external.reuse_sessions

TypeOptional ValueDefault
enumon, offon
说明

指定是否支持 SSL session 重用。详情见 http://erlang.org/doc/man/ssl.html

listener.ssl.external.honor_cipher_order

TypeOptional ValueDefault
enumon, offon
说明

指定是否使用服务端的偏好设置选择 Ciphers。

listener.ssl.external.peer_cert_as_username

TypeOptional ValueDefault
enumcn, dn, crtcn
说明

使用客户端证书中的 CN、DN 或者 CRT 字段的值作为 MQTT CONNECT 报文中的 Username 字段的值。 注意 listener.ssl.external.verify 应当设置为 verify_peer

listener.ssl.external.backlog

TypeDefault
integer1024
说明

TCP 连接队列的最大长度。它表明了系统中允许的正在三次握手的 TCP 连接队列最大个数。

listener.ssl.external.send_timeout

TypeDefault
duration15s
说明

TCP 报文发送超时时间。

listener.ssl.external.send_timeout_close*

TypeOptional ValueDefault
enumon, offon
说明

TCP 报文发送超时后,是否关闭该连接。

listener.ssl.external.recbuf

TypeDefault
bytesize-
说明

TCP 接收缓存区大小(操作系统内核级参数)。

参见:http://erlang.org/doc/man/inet.html

listener.ssl.external.sndbuf

TypeDefault
bytesize-
说明

TCP 发送缓存区大小(操作系统内核级参数)。

参见:http://erlang.org/doc/man/inet.html

listener.ssl.external.buffer

TypeDefault
bytesize-
说明

TCP 缓冲区大小 (用户级)。

该值建议大于等于 sndbuffrecbuff 的最大值,以避免一些性能问题。在不配置的情况下,它默认等于 sndbuff 和 recbuff 的最大值。

参见:http://erlang.org/doc/man/inet.html

listener.ssl.external.tune_buffer

TypeOptional ValueDefault
enumon, off-
说明

如果打开此配置,请设置该值等于 sndbuffrecbuff 的最大值。

listener.ssl.external.nodelay

TypeOptional ValueDefault
enumtrue, falsetrue
说明

TCP_NODELAY 参数。开启该选项即表示禁用 Nagle 算法,小包将被立即发送。

listener.ssl.external.reuseaddr

TypeOptional ValueDefault
enumtrue, falsetrue
说明

SO_REUSEADDR 参数。开启该选项即允许本地重用端口,无需等待 TIME_WAIT 状态结束。