Wildfly 10:如何记录HTTPS连接中客户端使用的密码套件?
在Wildfly 10中记录HTTPS连接使用的密码套件
没问题,我来帮你搞定Wildfly 10里记录HTTPS连接密码套件的事儿!下面两种方法可以让你轻松捕获客户端使用的密码套件信息:
方法一:通过Wildfly日志子系统配置专门的SSL日志
Wildfly 10默认用Undertow作为Web服务器,我们可以通过调整日志子系统的配置,把SSL握手相关的信息单独输出到指定日志文件:
- 打开你的Wildfly配置文件(单机模式用
standalone.xml,域模式用domain.xml),找到日志子系统节点<subsystem xmlns="urn:jboss:domain:logging:3.0">。 - 先添加一个专门的日志文件处理器,避免SSL日志和普通业务日志混在一起:
<periodic-rotating-file-handler name="SSL_FILE" autoflush="true"> <formatter> <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/> </formatter> <file relative-to="jboss.server.log.dir" path="ssl-handshake.log"/> <suffix value=".yyyy-MM-dd"/> <append value="true"/> </periodic-rotating-file-handler>
- 接着添加日志类别,针对Undertow的SSL处理模块设置
DEBUG级别,并关联刚才的日志处理器:
<logger category="io.undertow.server.protocol.ssl"> <level name="DEBUG"/> <handlers> <handler name="SSL_FILE"/> </handlers> </logger>
如果需要更底层的Tomcat SSL日志补充,也可以再加一个:
<logger category="org.apache.tomcat.util.net"> <level name="DEBUG"/> <handlers> <handler name="SSL_FILE"/> </handlers> </logger>
方法二:启用JSSE调试日志获取完整握手细节
如果需要看客户端发起的所有密码套件选项,以及更完整的握手流程,可以在启动Wildfly时添加JVM参数:
-Djavax.net.debug=ssl:handshake:verbose
这个参数会把所有SSL握手的详细过程输出到服务器标准输出日志里。你可以结合方法一的配置,或者在启动脚本里调整输出重定向,把这些信息单独存到文件。
查看日志内容
配置完成后重启Wildfly,当有客户端发起HTTPS连接时,你就能在指定日志文件(比如ssl-handshake.log)里找到类似内容:
*** ServerHello, TLSv1.2
RandomCookie: GMT: 1699999999 bytes = { 111, 222, 33, ... }
Session ID: {44, 55, 66, ...}
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
Compression Method: 0
这里的Cipher Suite字段就是最终协商使用的密码套件,同时你还能看到客户端最初发送的所有密码套件列表,方便判断哪些套件正在被使用。
内容的提问来源于stack exchange,提问作者Valentin C.
相关产品推荐
相关产品推荐

