|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object org.jboss.netty.channel.SimpleChannelUpstreamHandler org.jboss.netty.handler.codec.frame.FrameDecoder org.jboss.netty.handler.ssl.SslHandler
public class SslHandler
为Channel
添加SSL ·
TLS和StartTLS支持 .了解详细的用法请查阅发布包中的"SecureChat"例子或访问网站.
除非你正在重新识别,否则当握手正在进行你不可以写消息.使用handshake()
方法返回的ChannelFuture
在握手处理成功或失败时会通知你.
由于安全问题,默认情况下TLS重新识别被禁止, CVE-2009
-3555.你可以在风险范围内通过调用参数为true的setEnableRenegotiation(boolean)
启动重新识别.
如果enableRenegotiation
返回true
并且初始化握手已经完成,你可以调用 handshake()
触发重新识别.
如果enableRenegotiation
返回false
,尝试除非重新识别会导致连接关闭.
要关闭SSL会话,必须调用close()
发送close_notify
消息到远程端.这里会有异常,当你关闭了
Channel
- SslHandler
拦截关闭请求并在通道关闭之前自动发送close_notify
.
一旦SSL会话被关闭,就不可再用,所以你必须使用新的SSLEngine
创建一个新的SslHandler
,在接下来部分会有解释.
要重新开始SSL会话,你必须从ChannelPipeline
移除存在已关闭的SslHandler
,插入带有新的
SSLEngine
的SslHandler
,跟着如第一节所描述的开始握手进程.
StartTLS是一种固定的纯文本连接的通信模式. 请注意它不同于SSL · TLS,连接一开始就固定了.通常情况下,StartTLS由三个步骤组成:
startTls
标识为true创建一个SslHandler
SslHandler
到ChannelPipeline
SslHandler
被插入到
ChannelPipeline
之前客户端可以发送开始SSL握手请求,导致数据错误.
客户端实现就更简单了.
startTls
标识为false创建一个SslHandler
SslHandler
到ChannelPipeline
handshake()
初始SSL握手.
嵌套类摘要 |
---|
从接口 org.jboss.netty.channel.ChannelHandler 继承的嵌套类/接口 |
---|
ChannelHandler.Sharable |
构造方法摘要 | |
---|---|
SslHandler(javax.net.ssl.SSLEngine engine)
创建一个实例. |
|
SslHandler(javax.net.ssl.SSLEngine engine,
boolean startTls)
创建一个实例. |
|
SslHandler(javax.net.ssl.SSLEngine engine,
boolean startTls,
java.util.concurrent.Executor delegatedTaskExecutor)
创建一个实例. |
|
SslHandler(javax.net.ssl.SSLEngine engine,
java.util.concurrent.Executor delegatedTaskExecutor)
创建一个实例. |
|
SslHandler(javax.net.ssl.SSLEngine engine,
SslBufferPool bufferPool)
创建一个实例. |
|
SslHandler(javax.net.ssl.SSLEngine engine,
SslBufferPool bufferPool,
boolean startTls)
创建一个实例. |
|
SslHandler(javax.net.ssl.SSLEngine engine,
SslBufferPool bufferPool,
boolean startTls,
java.util.concurrent.Executor delegatedTaskExecutor)
创建一个实例. |
|
SslHandler(javax.net.ssl.SSLEngine engine,
SslBufferPool bufferPool,
java.util.concurrent.Executor delegatedTaskExecutor)
创建一个实例. |
方法摘要 | |
---|---|
void |
afterAdd(ChannelHandlerContext ctx)
|
void |
afterRemove(ChannelHandlerContext ctx)
|
void |
beforeAdd(ChannelHandlerContext ctx)
|
void |
beforeRemove(ChannelHandlerContext ctx)
|
void |
channelDisconnected(ChannelHandlerContext ctx,
ChannelStateEvent e)
当一个 Channel 被远程端断开连接时调用. |
ChannelFuture |
close()
发送一个SSL close_notify 消息到指定的Channel并销毁底层SSLEngine . |
ChannelFuture |
close(Channel channel)
已过时。 已被 close() 代替. |
void |
exceptionCaught(ChannelHandlerContext ctx,
ExceptionEvent e)
当一个I/O线程或 ChannelHandler 抛出异常时被调用. |
static SslBufferPool |
getDefaultBufferPool()
返回在构造器没有指定池时使用的 SslBufferPool . |
javax.net.ssl.SSLEngine |
getEngine()
返回被该处理器使用的 SSLEngine . |
void |
handleDownstream(ChannelHandlerContext context,
ChannelEvent evt)
处理指定的下游事件. |
ChannelFuture |
handshake()
为指定Channel开始SSL/TLS握手. |
ChannelFuture |
handshake(Channel channel)
已过时。 已被 handshake() 代替. |
boolean |
isEnableRenegotiation()
只用当允许TLS识别才返回 true . |
void |
setEnableRenegotiation(boolean enableRenegotiation)
允许或禁止TLS识别. |
从类 org.jboss.netty.handler.codec.frame.FrameDecoder 继承的方法 |
---|
channelClosed, messageReceived |
从类 org.jboss.netty.channel.SimpleChannelUpstreamHandler 继承的方法 |
---|
channelBound, channelConnected, channelInterestChanged, channelOpen, channelUnbound, childChannelClosed, childChannelOpen, handleUpstream, writeComplete |
从类 java.lang.Object 继承的方法 |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public SslHandler(javax.net.ssl.SSLEngine engine)
engine
- 该处理器使用的SSLEngine
public SslHandler(javax.net.ssl.SSLEngine engine, SslBufferPool bufferPool)
engine
- 该处理器使用的SSLEngine
bufferPool
- 获取该处理器使用的SSLEngine
需要的缓冲的SslBufferPool
public SslHandler(javax.net.ssl.SSLEngine engine, boolean startTls)
engine
- 该处理器使用的SSLEngine
startTls
- true
表示SSLEngine
第一个写请求不需要加密public SslHandler(javax.net.ssl.SSLEngine engine, SslBufferPool bufferPool, boolean startTls)
engine
- 该处理器使用的SSLEngine
bufferPool
- 获取该处理器使用的SSLEngine
需要的缓冲的SslBufferPool
startTls
- true
表示SSLEngine
第一个写请求不需要加密public SslHandler(javax.net.ssl.SSLEngine engine, java.util.concurrent.Executor delegatedTaskExecutor)
engine
- 该处理器使用的SSLEngine
delegatedTaskExecutor
- 执行SSLEngine.getDelegatedTask()
返回的委派任务的Executor
public SslHandler(javax.net.ssl.SSLEngine engine, SslBufferPool bufferPool, java.util.concurrent.Executor delegatedTaskExecutor)
engine
- 该处理器使用的SSLEngine
bufferPool
- 获取该处理器使用的SSLEngine
需要的缓冲的SslBufferPool
delegatedTaskExecutor
- 执行SSLEngine.getDelegatedTask()
返回的委派任务的Executor
public SslHandler(javax.net.ssl.SSLEngine engine, boolean startTls, java.util.concurrent.Executor delegatedTaskExecutor)
engine
- 该处理器使用的SSLEngine
startTls
- true
表示SSLEngine
第一个写请求不需要加密delegatedTaskExecutor
- 执行SSLEngine.getDelegatedTask()
返回的委派任务的Executor
public SslHandler(javax.net.ssl.SSLEngine engine, SslBufferPool bufferPool, boolean startTls, java.util.concurrent.Executor delegatedTaskExecutor)
engine
- 该处理器使用的SSLEngine
bufferPool
- 获取该处理器使用的SSLEngine
需要的缓冲的SslBufferPool
startTls
- true
表示SSLEngine
第一个写请求不需要加密delegatedTaskExecutor
- 执行SSLEngine.getDelegatedTask()
返回的委派任务的Executor
方法详细信息 |
---|
public static SslBufferPool getDefaultBufferPool()
SslBufferPool
.
public javax.net.ssl.SSLEngine getEngine()
SSLEngine
.
public ChannelFuture handshake()
ChannelFuture
.@Deprecated public ChannelFuture handshake(Channel channel)
handshake()
代替.
public ChannelFuture close()
close_notify
消息到指定的Channel并销毁底层SSLEngine
.
@Deprecated public ChannelFuture close(Channel channel)
close()
代替.
public boolean isEnableRenegotiation()
true
.
public void setEnableRenegotiation(boolean enableRenegotiation)
public void handleDownstream(ChannelHandlerContext context, ChannelEvent evt) throws java.lang.Exception
ChannelDownstreamHandler
复制的描述
ChannelDownstreamHandler
中的 handleDownstream
context
- 处理器的上下文对象evt
- 要处理或拦截的事件
java.lang.Exception
public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws java.lang.Exception
SimpleChannelUpstreamHandler
复制的描述Channel
被远程端断开连接时调用.
FrameDecoder
中的 channelDisconnected
java.lang.Exception
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws java.lang.Exception
SimpleChannelUpstreamHandler
复制的描述ChannelHandler
抛出异常时被调用.
FrameDecoder
中的 exceptionCaught
java.lang.Exception
public void beforeAdd(ChannelHandlerContext ctx) throws java.lang.Exception
LifeCycleAwareChannelHandler
中的 beforeAdd
java.lang.Exception
public void afterAdd(ChannelHandlerContext ctx) throws java.lang.Exception
LifeCycleAwareChannelHandler
中的 afterAdd
java.lang.Exception
public void beforeRemove(ChannelHandlerContext ctx) throws java.lang.Exception
LifeCycleAwareChannelHandler
中的 beforeRemove
java.lang.Exception
public void afterRemove(ChannelHandlerContext ctx) throws java.lang.Exception
LifeCycleAwareChannelHandler
中的 afterRemove
java.lang.Exception
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |