Package io.netty.handler.ssl
Class SslMasterKeyHandler
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.handler.ssl.SslMasterKeyHandler
- All Implemented Interfaces:
ChannelHandler
,ChannelInboundHandler
- Direct Known Subclasses:
SslMasterKeyHandler.WiresharkSslMasterKeyHandler
The
SslMasterKeyHandler
is a channel-handler you can include in your pipeline to consume the master key
invalid input: '&' session identifier for a TLS session.
This can be very useful, for instance the SslMasterKeyHandler.WiresharkSslMasterKeyHandler
implementation will
log the secret invalid input: '&' identifier in a format that is consumable by Wireshark -- allowing easy decryption of pcap/tcpdumps.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
Record the session identifier and master key to theInternalLogger
namedio.netty.wireshark
.Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final InternalLogger
private static final Class
<?> The JRE SSLSessionImpl cannot be importedprivate static final Field
The master key field in the SSLSessionImplstatic final String
A system property that can be used to turn on/off theSslMasterKeyHandler
dynamically without having to edit your pipeline.private static final Throwable
The unavailability cause of whether the private Sun implementation of SSLSessionImpl is available. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
accept
(SecretKey masterKey, SSLSession session) Consume the master key for the session and the sessionIdstatic void
Ensure that SSLSessionImpl is available.static boolean
protected boolean
Checks if the handler is set up to actually handle/accept the event.static SslMasterKeyHandler
Create aSslMasterKeyHandler.WiresharkSslMasterKeyHandler
instance.static Throwable
Returns the cause of unavailability.final void
userEventTriggered
(ChannelHandlerContext ctx, Object evt) CallsChannelHandlerContext.fireUserEventTriggered(Object)
to forward to the nextChannelInboundHandler
in theChannelPipeline
.Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelInactive, channelRead, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, handlerRemoved, isSharable
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.netty.channel.ChannelHandler
handlerAdded, handlerRemoved
-
Field Details
-
logger
-
SSL_SESSIONIMPL_CLASS
The JRE SSLSessionImpl cannot be imported -
SSL_SESSIONIMPL_MASTER_SECRET_FIELD
The master key field in the SSLSessionImpl -
SYSTEM_PROP_KEY
A system property that can be used to turn on/off theSslMasterKeyHandler
dynamically without having to edit your pipeline.-Dio.netty.ssl.masterKeyHandler=true
- See Also:
-
UNAVAILABILITY_CAUSE
The unavailability cause of whether the private Sun implementation of SSLSessionImpl is available.
-
-
Constructor Details
-
SslMasterKeyHandler
protected SslMasterKeyHandler()Constructor.
-
-
Method Details
-
ensureSunSslEngineAvailability
public static void ensureSunSslEngineAvailability()Ensure that SSLSessionImpl is available.- Throws:
UnsatisfiedLinkError
- if unavailable
-
isSunSslEngineAvailable
public static boolean isSunSslEngineAvailable() -
accept
Consume the master key for the session and the sessionId- Parameters:
masterKey
- A 48-byte secret shared between the client and server.session
- The current TLS session
-
userEventTriggered
Description copied from class:ChannelInboundHandlerAdapter
CallsChannelHandlerContext.fireUserEventTriggered(Object)
to forward to the nextChannelInboundHandler
in theChannelPipeline
. Sub-classes may override this method to change behavior.- Specified by:
userEventTriggered
in interfaceChannelInboundHandler
- Overrides:
userEventTriggered
in classChannelInboundHandlerAdapter
-
masterKeyHandlerEnabled
protected boolean masterKeyHandlerEnabled()Checks if the handler is set up to actually handle/accept the event. By default theSYSTEM_PROP_KEY
property is checked, but any implementations of this class are free to override if they have different mechanisms of checking.- Returns:
- true if it should handle, false otherwise.
-
newWireSharkSslMasterKeyHandler
Create aSslMasterKeyHandler.WiresharkSslMasterKeyHandler
instance. This TLS master key handler logs the master key and session-id in a format understood by Wireshark -- this can be especially useful if you need to ever decrypt a TLS session and are using perfect forward secrecy (i.e. Diffie-Hellman) The key and session identifier are forwarded to the log named 'io.netty.wireshark'.
-