TLS
TCP 传输,其上叠加一层 TLS,通过证书进行身份认证。驱动发送的所有内容在传输过程中都会被加密;其上层协议的任何部分都不会改变,因此任何支持 tcp 并声明 tls 的驱动,只需修改传输代码即可完成切换。
传输语法
{IP address or hostname}[:{port}]| 端口不会自动切换为安全默认值。纯文本默认端口为 502 的协议,在这里仍然默认使用 502——如果设备监听在其他端口,请显式指定 TLS 端口。 |
|---|
示例
modbus-tcp:tls://192.168.1.100:802?tls.trust-store=/etc/plc4x/truststore.p12&tls.trust-store-password=secret名称
类型
默认值
是否必填
描述
名称
TLS
代码
tls
Maven 依赖
<dependency>
<groupId>org.apache.plc4x</groupId>
<artifactId>plc4j-transports-tls</artifactId>
<version>1.0.0</version>
</dependency>配置选项:
tls.verify
BOOLEAN
true
tls.ignore-common-name
BOOLEAN
false
接受为与所连接主机不同的其他主机签发的服务器证书
tls.trust-store
STRING
要信任的证书密钥库(Key Store),用于替代 JVM 的公共受信证书颁发机构。
tls.trust-store-password
STRING
由 tls.trust-store 指定的信任库(trust store)的密码
tls.trust-store-type
STRING
PKCS12
由 tls.trust-store 指定的信任库类型
tls.version
STRING
TLS 协议版本(例如 'TLSv1.2'、'TLSv1.3')。若未设置,则使用 TLS 1.3,并回退至 TLS 1.2。
tls.keystore
STRING
包含用于双向 TLS 的客户端证书和私钥的密钥库(PKCS12/JKS)路径。
tls.keystore-password
STRING
客户端密钥库的密码。
tls.keystore-type
STRING
密钥库类型(例如 'PKCS12'、'JKS')。默认为 PKCS12。
tls.log-session-keys
BOOLEAN
false
以 SSLKEYLOGFILE 格式将 TLS 会话密钥记录到审计日志中,供 Wireshark 进行解密。
tls.connect-timeout-ms
INT
5000
连接超时时间,单位为毫秒。
tls.read-timeout-ms
INT
0
以毫秒为单位的 Socket 读取超时时间。0 表示不超时。
tls.write-timeout-ms
INT
0
以毫秒为单位的套接字写入超时时间。0 表示不超时。
tls.no-delay
BOOLEAN
true
启用 TCP_NODELAY(禁用 Nagle 算法)。
tls.keep-alive
BOOLEAN
false
启用 SO_KEEPALIVE。
tls.send-buffer-size
INT
81920
发送缓冲区大小(字节)。0 表示使用系统默认值。
tls.receive-buffer-size
INT
81920
以字节为单位的接收缓冲区大小。0 表示使用系统默认值。
tls.local-address
STRING
要绑定的本地地址(可选)。若未设置,则使用默认值。
tls.local-port
INT
0
要绑定的本地端口(可选)。0 表示使用临时端口。
TLS 特有选项下方的套接字选项继承自 TCP 传输。
证书
默认情况下使用 JVM 自带的公开证书颁发机构列表,而这很少是工厂网络所希望的。将 tls.trust-store 指向一个包含你愿意信任的证书的密钥库;当设备要求客户端也进行身份验证时(双向 TLS),将 tls.keystore 指向你自己的证书和私钥。
tls.verify=false 会让 TLS 退化为只有加密而没有身份验证——它能防止窃听,却挡不住能够重定向你流量的攻击者。tls.ignore-common-name=true 是针对常见情况的更窄的逃生通道:设备的证书是为某个名称签发的,但它已不再能通过该名称被访问。这两者都是为了把产线拉起来;两者都不该出现在运行中的工厂里。 |
|---|
评论
登录后参与评论
KnowForge