更新时间:2024-11-01 GMT+08:00
分享

使用SSL方式建连报错或阻塞

问题现象

JDBC使用SSL方式建立连接时,会在客户端获取强随机数,建立连接过程中可能出现以下的报错信息:

场景1:如下报错:

场景2:建连阻塞。如果连接串中配置了loginTimeout后,会报Connection attempt timed out,如果不配置该参数,会一直阻塞。

原因分析

客户端环境随机数产生的速度太慢,无法满足产品要求,熵源不足,导致服务启动失败。当前已知在一些Linux环境中存在此问题。

处理方法

方法1:启动客户端环境中的haveged服务,增加系统熵池熵值以提高读取随机数的速度。启动命令为:

systemctl start haveged

方法2:调整客户端jdk配置

打开$JAVA_PATH/jre/lib/security/java.security文件,修改以下两个配置项:

securerandom.source=file:/dev/./urandom
securerandom.strongAlgorithms=NativePRNGNonBlocking:SUN

方法2的本质是在获取强随机数时,使用伪随机数代替,减少需要消耗的熵值。会影响客户端所有使用该jdk的应用,在获取强随机数时会使用伪随机数代替。

相关文档