rngd加速Tomcat启动速度

在vps上部署tomcat后,如果不使用tomcat自带的管理界面,那么每次重新部署网站都得重启tomcat,而由于Tomcat 7/8都使用
org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom
,导致每次在生成随机数时要花费几百秒,而平时我的vps也没啥东西运行,所以熵池(entropy pool)的填充速度也是十分慢,最长的一次启动更花了我300多s。(每次在vps重启tomcat都得刷会微博,然后忘了干正事)

1
04-May-2017 20:58:16.765 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 303427 ms

通过watch cat /proc/sys/kernel/random/entropy_avail查看,平时的池大小都是在200左右浮动,更极端情况保持了很久的20,这样势必会导致tomcat从/dev/random读取随机数时产生了阻塞。通过这样的特点,一些攻击也可以通过这些来实现,不断的使用需要读取随机数的地方消耗系统的熵池,造成系统的阻塞。虽然说使用/dev/urandom伪随机数生成设备也能在熵池较小的情况下完成随机数的生成,但是并没有真·随机数来的安全(恩。大概)。
Centos下使用

yum install rng-tools

安装服务之后使用

systemctl enable rngd.service

启动rngd服务,

systemctl start rngd.service

systemctl status rngd.service查看rngd服务状态,启动失败可以

1
2
cp /usr/lib/systemd/system/rngd.service /etc/systemd/system
vim /etc/systemd/system/rngd.service

修改ExecStart=ExecStart=/sbin/rngd -f -r /dev/urandom
重启服务

1
2
systemctl daemon-reload
systemctl restart rngd.service

不过rngd -v我这下面还是显示

1
2
3
Unable to open file: /dev/tpm0
can't open any entropy source
Maybe RNG device modules are not loaded

在Arch的wiki上查到这篇文章here
但是对于我来说并没有啥卵用

文章作者: Image
文章链接: https://by.cx/2017/05/09/rngd-e5-8a-a0-e9-80-9ftomcat-e5-90-af-e5-8a-a8-e9-80-9f-e5-ba-a6/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 编译程序