This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/storm.git


The following commit(s) were added to refs/heads/master by this push:
     new 7fef7cd0c STORM-4079: SSL Setup Doc (#8072)
7fef7cd0c is described below

commit 7fef7cd0c661b7f84218c24a471ff67f8d8116a4
Author: puru <[email protected]>
AuthorDate: Tue May 20 11:46:23 2025 -0700

    STORM-4079: SSL Setup Doc (#8072)
    
    * STORM-4079: SSL Setup Doc
    
    * STORM-4079: SSL Setup Doc - review comments
    
    ---------
    
    Co-authored-by: purshotam shah <[email protected]>
---
 docs/SECURITY.md | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 106 insertions(+)

diff --git a/docs/SECURITY.md b/docs/SECURITY.md
index 77cd23fad..aacbff7de 100644
--- a/docs/SECURITY.md
+++ b/docs/SECURITY.md
@@ -187,7 +187,113 @@ If users want to setup 2-way auth
 9. logviewer.https.want.client.auth (If this set to true server requests for 
client certificate authentication, but keeps the connection if no 
authentication provided)
 10. logviewer.https.need.client.auth (If this set to true server requires 
client to provide authentication)
 
+## Mutual TLS (mTLS) Support
 
+**Available since Storm 2.7.0 (STORM-4070)**
+
+Storm now supports mutual TLS (mTLS) for internal Thrift RPC communication 
among Nimbus, Supervisors, and workers. Unlike one-way TLS, mTLS requires both 
parties to present and verify each other's certificates. This ensures full 
two-way certificate authentication and encryption.
+
+### Example TLS Configuration
+
+### 1. Nimbus Settings
+
+```yaml
+# Thrift TLS Listener
+nimbus.thrift.tls.port: 6067
+nimbus.thrift.access.log.enabled: true
+nimbus.thrift.tls.server.only: true
+
+# Server-side certificates & truststore
+nimbus.thrift.tls.server.keystore.path: /etc/ssl/server.keystore.jks
+nimbus.thrift.tls.server.keystore.password: password
+nimbus.thrift.tls.server.truststore.path: /etc/ssl//server.truststore.jks
+nimbus.thrift.tls.server.truststore.password: password
+
+# Client-side certificates & transport plugin
+nimbus.thrift.client.use.tls: true
+nimbus.thrift.tls.client.keystore.path: /etc/ssl/client.keystore.jks
+nimbus.thrift.tls.client.keystore.password: password
+nimbus.thrift.tls.client.truststore.path: /etc/ssl/client.truststore.jks
+nimbus.thrift.tls.client.truststore.password: password
+nimbus.thrift.tls.transport: 
org.apache.storm.security.auth.tls.TlsTransportPlugin
+```
+### 2. Supervisor Settings
+
+```yaml
+# TLS transport plugin & client enable
+supervisor.thrift.transport: 
org.apache.storm.security.auth.tls.TlsTransportPlugin
+supervisor.thrift.client.use.tls: true
+
+# Supervisor as Thrift TLS server
+supervisor.thrift.tls.server.keystore.path: /etc/ssl/server.keystore.jks
+supervisor.thrift.tls.server.keystore.password: password
+supervisor.thrift.tls.server.truststore.path: /etc/ssl/server.truststore.jks
+supervisor.thrift.tls.server.truststore.password: password
+
+# Supervisor client settins
+supervisor.thrift.tls.client.keystore.path: /etc/ssl/client.keystore.jks
+supervisor.thrift.tls.client.keystore.password: password
+supervisor.thrift.tls.client.truststore.path: /etc/ssl/client.truststore.jks
+supervisor.thrift.tls.client.truststore.password: password
+```
+
+### 3. Worker Settings
+
+```yaml
+# Storm Netty messaging TLS (worker ↔ worker)
+storm.messaging.netty.tls.enable: true
+storm.messaging.netty.tls.require.open.ssl: true
+
+# Inbound (server-side) credentials
+storm.messaging.netty.tls.keystore.path: /etc/ssl/server.keystore.jks
+storm.messaging.netty.tls.keystore.password: password
+storm.messaging.netty.tls.truststore.path: /etc/ssl/server.truststore.jks
+storm.messaging.netty.tls.truststore.password: password
+
+# Outbound (client-side) credentials
+storm.messaging.netty.tls.client.keystore.path: /etc/ssl/client.keystore.jks
+storm.messaging.netty.tls.client.keystore.password: password
+storm.messaging.netty.tls.client.truststore.path: 
/etc/ssl/client.truststore.jks
+storm.messaging.netty.tls.client.truststore.password: password
+```
+
+### 4. Setting Descriptions
+
+| Setting                                           | Description              
                                                                    |
+|---------------------------------------------------|----------------------------------------------------------------------------------------------|
+| `nimbus.thrift.tls.port`                         | Port on which Nimbus 
listens for TLS-encrypted Thrift connections (e.g., 6067)               |
+| `nimbus.thrift.tls.server.only`                   | Nimbus accepts only 
secure TLS connections                                                  |
+| `nimbus.thrift.tls.server.keystore.path`          | Path to Nimbus server 
keystore                                                              |
+| `nimbus.thrift.tls.server.keystore.password`      | Password for the Nimbus 
server keystore                                                     |
+| `nimbus.thrift.tls.server.truststore.path`        | Path to Nimbus server 
truststore                                                            |
+| `nimbus.thrift.tls.server.truststore.password`    | Password for the Nimbus 
truststore                                                          |
+| `nimbus.thrift.client.use.tls`                    | Enable TLS on Nimbus 
outbound Thrift calls                                                  |
+| `nimbus.thrift.tls.client.keystore.path`          | Path to Nimbus client 
keystore (for outbound connections)                                    |
+| `nimbus.thrift.tls.client.keystore.password`      | Password for the Nimbus 
client keystore                                                     |
+| `nimbus.thrift.tls.client.truststore.path`        | Path to Nimbus client 
truststore                                                            |
+| `nimbus.thrift.tls.client.truststore.password`    | Password for the Nimbus 
client truststore                                                   |
+| `nimbus.thrift.tls.transport`                     | TLS transport plugin 
class for Nimbus                                                       |
+| `storm.principal.tolocal`                         | Principal-to-local 
mapping class (for X.509 auth)                                           |
+| `supervisor.thrift.transport`                     | TLS transport plugin 
class for Supervisor Thrift                                            |
+| `supervisor.thrift.client.use.tls`                | Enable TLS for 
Supervisor outbound Thrift calls                                             |
+| `supervisor.thrift.tls.server.keystore.path`      | Path to Supervisor 
server keystore                                                          |
+| `supervisor.thrift.tls.server.keystore.password`  | Password for the 
Supervisor server keystore                                                 |
+| `supervisor.thrift.tls.server.truststore.path`    | Path to Supervisor 
server truststore                                                        |
+| `supervisor.thrift.tls.server.truststore.password`| Password for the 
Supervisor truststore                                                      |
+| `supervisor.thrift.tls.client.keystore.path`      | Path to Supervisor 
client keystore                                                          |
+| `supervisor.thrift.tls.client.keystore.password`  | Password for the 
Supervisor client keystore                                                 |
+| `supervisor.thrift.tls.client.truststore.path`    | Path to Supervisor 
client truststore                                                        |
+| `supervisor.thrift.tls.client.truststore.password`| Password for the 
Supervisor client truststore                                               |
+| `storm.messaging.netty.tls.enable`                | Enable TLS for Storm 
Netty messaging (inter-worker)                                         |
+| `storm.messaging.netty.tls.require.open.ssl`      | Require OpenSSL provider 
for Netty TLS                                                      |
+| `storm.messaging.netty.tls.keystore.path`         | Path to Netty server 
keystore                                                               |
+| `storm.messaging.netty.tls.keystore.password`     | Password for the Netty 
server keystore                                                      |
+| `storm.messaging.netty.tls.truststore.path`       | Path to Netty server 
truststore                                                             |
+| `storm.messaging.netty.tls.truststore.password`   | Password for the Netty 
server truststore                                                    |
+| `storm.messaging.netty.tls.client.keystore.path`  | Path to Netty client 
keystore                                                               |
+| `storm.messaging.netty.tls.client.keystore.password`| Password for the Netty 
client keystore                                                     |
+| `storm.messaging.netty.tls.client.truststore.path`| Path to Netty client 
truststore                                                             |
+| `storm.messaging.netty.tls.client.truststore.password`| Password for the 
Netty client truststore                                                  |
 
 
 ## Authentication (Kerberos)

Reply via email to