merlimat closed pull request #3057: Documentation for TLS protocol version and 
ciphers
URL: https://github.com/apache/pulsar/pull/3057
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/site2/docs/reference-configuration.md 
b/site2/docs/reference-configuration.md
index 08df5d1e4c..0d235896b8 100644
--- a/site2/docs/reference-configuration.md
+++ b/site2/docs/reference-configuration.md
@@ -140,6 +140,8 @@ Pulsar brokers are responsible for handling incoming 
messages from producers, di
 |tlsKeyFilePath|  Path for the TLS private key file ||
 |tlsTrustCertsFilePath| Path for the trusted TLS certificate file ||
 |tlsAllowInsecureConnection|  Accept untrusted TLS certificate from client  
|false|
+|tlsProtocols|Specify the tls protocols the broker will use to negotiate 
during TLS Handshake. Multiple values can be specified, separated by commas. 
Example:- ```TLSv1.2```, ```TLSv1.1```, ```TLSv1``` ||
+|tlsCiphers|Specify the tls cipher the broker will use to negotiate during TLS 
Handshake. Multiple values can be specified, separated by commas. Example:- 
```TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256```||
 |maxUnackedMessagesPerConsumer| Max number of unacknowledged messages allowed 
to receive messages by a consumer on a shared subscription. Broker will stop 
sending messages to consumer once, this limit reaches until consumer starts 
acknowledging messages back. Using a value of 0, is disabling unackeMessage 
limit check and consumer can receive messages without any restriction  |50000|
 |maxUnackedMessagesPerSubscription| Max number of unacknowledged messages 
allowed per shared subscription. Broker will stop dispatching messages to all 
consumers of the subscription once this limit reaches until consumer starts 
acknowledging messages back and unack count reaches to limit/2. Using a value 
of 0, is disabling unackedMessage-limit check and dispatcher can dispatch 
messages without any restriction  |200000|
 |maxConcurrentLookupRequest|  Max number of concurrent lookup request broker 
allows to throttle heavy incoming lookup traffic |50000|
@@ -434,7 +436,8 @@ The [Pulsar 
proxy](concepts-architecture-overview.md#pulsar-proxy) can be config
 |tlsTrustCertsFilePath| Path for the trusted TLS certificate pem file ||
 |tlsHostnameVerificationEnabled|  Whether the hostname is validated when the 
proxy creates a TLS connection with brokers  |false|
 |tlsRequireTrustedClientCertOnConnect|  Whether client certificates are 
required for TLS. Connections are rejected if the client certificate isn’t 
trusted. |false|
-
+|tlsProtocols|Specify the tls protocols the broker will use to negotiate 
during TLS Handshake. Multiple values can be specified, separated by commas. 
Example:- ```TLSv1.2```, ```TLSv1.1```, ```TLSv1``` ||
+|tlsCiphers|Specify the tls cipher the broker will use to negotiate during TLS 
Handshake. Multiple values can be specified, separated by commas. Example:- 
```TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256```||
 
 ## ZooKeeper
 
diff --git a/site2/docs/security-tls-transport.md 
b/site2/docs/security-tls-transport.md
index e52182942d..4faba0267e 100644
--- a/site2/docs/security-tls-transport.md
+++ b/site2/docs/security-tls-transport.md
@@ -125,6 +125,23 @@ tlsTrustCertsFilePath=/path/to/ca.cert.pem
 > A full list of parameters available in the `conf/broker.conf` file,
 > as well as the default values for those parameters, can be found in [Broker 
 > Configuration](reference-configuration.md#broker) 
 
+### TLS Protocol Version and Cipher
+
+The broker (and proxy) can be configured to require specific TLS protocol 
versions and ciphers for TLS negiotation. This can be used to stop clients from 
requesting downgraded TLS protocol versions or ciphers which may have 
weaknesses.
+
+Both the TLS protocol versions and cipher properties can take multiple values, 
separated by commas. The possible values for protocol version and ciphers 
depend on the TLS provider being used. Pulsar uses OpenSSL if available, but if 
not defaults back to the JDK implementation.
+
+```properties
+tlsProtocols=TLSv1.2,TLSv1.1
+tlsCiphers=TLS_DH_RSA_WITH_AES_256_GCM_SHA384,TLS_DH_RSA_WITH_AES_256_CBC_SHA
+```
+
+OpenSSL currently supports ```SSL2```, ```SSL3```, ```TLSv1```, ```TLSv1.1``` 
and ```TLSv1.2``` for the protocol version. A list of supported cipher can be 
acquired from the openssl ciphers command, i.e. ```openssl ciphers -tls_v2```.
+
+For JDK 8, a list of supported values can be obtained from the documentation:
+- [TLS 
protocol](https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext)
+- 
[Ciphers](https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites)
+
 ## Proxy Configuration
 
 Proxies need to configure TLS in two directions, for clients connecting to the 
proxy, and for the proxy to be able to connect to brokers.


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to