I am running Hazelcast as a cache service, it seems I can improve perf with BoringSSL and this is simpler because I don't need to install additional software
Reading their doc: https://docs.hazelcast.com/imdg/4.1.2/security/integrating-openssl.html
I see that I just need two jars, but I don't see any mention of config settings. Do I just use the Java SSL settings with BasicSSLContextFactory
?
I see I can use com.hazelcast.nio.ssl.BasicSSLContextFactory
as mentioned here https://docs.hazelcast.com/imdg/4.1.2/security/tls-ssl.html#tlsssl-for-hazelcast-members for the Java SSL implementation
They also provide com.hazelcast.nio.ssl.OpenSSLEngineFactory
for OpenSSL integration (https://docs.hazelcast.com/imdg/4.1.2/security/integrating-openssl.html#using-openssl)
Starting with Hazelcast version 4.0, there is the following logic deciding which TLS engine is used:
OpenSSLEngineFactory
;BasicSSLContextFactory
.Surely, you don't need to use the defaults, but you can specify the factory-class-name
configuration attribute with the factory of your choice.
You can use the same properties in OpenSSLEngineFactory
like the ones in BasicSSLContextFactory
(e.g. keyStore*
, trustStore*
). Nevertheless, the native way of configuring the OpenSSLEngineFactory
is by using keyFile
and other properties mentioned in the documentation section about OpenSSL.
As mentioned above, the OpenSSLEngineFactory
is not used for Java 11 and newer by default. This decision was based on Hazelcast performance testing which shows OpenSSL performance benefits when used with Java 8, but not with Java 11 (or newer).
Here are throughput graphs from those tests (performed in 2019).
TLSv1.2
TLSv1.3