`
can_do
  • 浏览: 266018 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Linux或者Solaris下的随机数读取报错问题【/dev/[u]random closed?】

阅读更多
【问题现象】
Apusic启动正常,但是访问web控制台时提示如下错误:
2011-03-17 20:14:32 错误 [apusic.web.default./] 执行Servlet时发生错误。
java.security.ProviderException: nextBytes() failed
        at sun.security.provider.NativePRNG$RandomIO.implNextBytes(NativePRNG.java:287)
        at sun.security.provider.NativePRNG$RandomIO.access$200(NativePRNG.java:125)
        at sun.security.provider.NativePRNG.engineNextBytes(NativePRNG.java:114)
        at java.security.SecureRandom.nextBytes(SecureRandom.java:450)
        at java.util.UUID.randomUUID(UUID.java:178)
        at com.apusic.web.jsp.parser.TreeMaker.assignId(Unknown Source)
        at com.apusic.web.jsp.parser.TreeMaker.processTag(Unknown Source)
        at com.apusic.web.jsp.parser.JspPageParser.parseTag(Unknown Source)
        at com.apusic.web.jsp.parser.JspPageParser.parse(Unknown Source)
        at com.apusic.web.jsp.parser.JspPageParser.parse(Unknown Source)
        at com.apusic.web.jsp.parser.JspParser.parse(Unknown Source)
        at com.apusic.web.jsp.generator.JspCompilationContext.compile(Unknown Source)
        at com.apusic.web.jsp.JspServlet$Page.load(Unknown Source)
        at com.apusic.web.jsp.JspServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at com.apusic.web.container.ServletComponent.service(Unknown Source)
        at com.apusic.web.container.WebContainer.invoke(Unknown Source)
        at com.apusic.web.container.RequestDispatcherImpl.forward(Unknown Source)
        at com.apusic.web.servlet.FileServlet.getResource(Unknown Source)
        at com.apusic.web.servlet.FileServlet.doGet(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at com.apusic.web.container.ServletComponent.service(Unknown Source)
        at com.apusic.web.container.WebContainer.invoke(Unknown Source)
        at com.apusic.web.container.WebContainer.processRequest(Unknown Source)
        at com.apusic.web.http.VirtualHost.processRequest(Unknown Source)
        at com.apusic.web.http.HttpServer.processRequest(Unknown Source)
        at com.apusic.web.http.HttpConnectionHandler.service(Unknown Source)
        at com.apusic.web.http.ConnectionHandler.processRequest(Unknown Source)
        at com.apusic.web.http.ConnectionHandler.processConnection(Unknown Source)
        at com.apusic.web.http.ConnectionHandler.run(Unknown Source)
        at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)
Caused by: java.io.EOFException: /dev/[u]random closed?
        at sun.security.provider.NativePRNG$RandomIO.readFully(NativePRNG.java:204)
        at sun.security.provider.NativePRNG$RandomIO.ensureBufferValid(NativePRNG.java:264)
        at sun.security.provider.NativePRNG$RandomIO.implNextBytes(NativePRNG.java:278)
        ... 31 more
【问题分析】
经查阅相关资料并从sun的官网上获取相关信息得知,这可能是sun的一个bug。
【问题解决】
基于目前的情况,解决方式如下,在JVM的启动参数中指定使用的随机数设备,如下:
-Djava.security.egd=file:/dev/./urandom
注意:此处的文件路经中有个dot,而不是/dev/urandom这个格式。
PS:从JDK的源码看,提供的随机数设备的路径分别是:/dev/random和/dev/urandom,但是有时os
也会因为连接错误导致读取随机数设备失败,可以尝试重新删除随机数设备的连接再重新绑定一次,如下:
rm -rf *random
ln -s random
ln -s urandom
分享到:
评论

相关推荐

    /dev/random也是一个特殊文件,是用于产生随机数据流的.zip

    为了解决`/dev/random`的延迟问题,Linux内核还提供了另一个设备`/dev/urandom`。`/dev/urandom`是伪随机数生成器(PRNG),它并不依赖于熵池,而是使用一个初始种子值开始,然后通过复杂的算法产生看似随机的序列。...

    hw_random硬件随机数1

    【hw_random硬件随机数生成器】是Android系统中利用CPU或主板上特殊硬件特性——随机数生成器(RNG)的软件框架。该框架由两部分组成:核心部分提供名为/dev/hw_random的字符设备及其sysfs支持,另一部分是针对特定...

    解决任Weblogic 在Linux启动慢的问题

    ln /dev/urandom /dev/random”,这样可以将 /dev/random 链接到 /dev/urandom,从而解决随机数生成的延迟问题。 ### 方法三:修改 JDK 的安全配置文件 可以修改 Linux 上 Weblogic 使用的 JDK 的安全配置文件 $...

    字符终端写fb0

    2. **设备文件**:在Linux中,设备通常以文件的形式存在于`/dev`目录下,如`/dev/fb0`。程序可以像操作普通文件一样与这些设备进行交互。 3. **Linux内核驱动**:`/dev/fb0`的存在得益于Linux内核的帧缓冲驱动,它...

    linux获取真正随机数源码

    总的来说,获取Linux下的真正随机数涉及到对内核随机数生成器的理解,以及如何在用户空间程序中正确使用`/dev/random`或`/dev/urandom`。在编写涉及安全的程序时,确保随机数质量是非常关键的一步,这不仅关乎程序的...

    国密随机数检测工具GM/T 0005-2021 最新标准

    中国国家标准GM/T 0005-2021为我国提供了关于随机数生成器测试的标准,确保了国产化信息安全系统的随机数质量。本文将详细解析这一标准,并结合随机数检测工具Demo,探讨其应用和重要性。 一、国密随机数检测工具...

    Linux 的dev目录详解和Linux系统各个目录的作用.pdf

    Linux 的dev目录详解和Linux系统各个目录的作用 Linux 的/dev 目录详解 在 Linux 系统中,/dev 目录是一個非常重要的目录,包含了所有外部设备的访问端口。/dev 目录对所有用户都非常重要,因为它包含了所有 Linux...

    shell脚本如何获取随机数random

    为了避免上述提到的并发问题,文章介绍了使用/dev/urandom来生成更安全的随机数种子的方法。/dev/urandom是一个提供伪随机数生成器的特殊文件,可以在每次需要时生成新的随机数序列。通过管道命令`tr -cd 0-9 </dev/...

    rand_source.rar_random

    /dev/random 的阻塞特性可能会导致性能问题,特别是在需要大量随机数且系统熵池未充满的情况下。为了解决这个问题,有些系统还提供了 /dev/urandom 设备,它是一个非阻塞的伪随机数生成器,牺牲了一定的安全性来换取...

    linux运维学习笔记:Shell生成随机数的方法.pdf

    在Linux运维过程中,掌握Shell脚本的编写技巧是非常重要的,其中生成随机数是常见的需求,例如在自动化测试、密码生成或者模拟随机数据等场景。本文将详细介绍几种在Shell中生成随机数的方法。 首先,最简单的方法...

    Linux 设备分配清单

    在Linux中,设备文件通常位于/dev目录下,通过这些文件,用户空间的应用程序可以与硬件设备交互,而无需直接访问硬件。设备分配清单对于理解Linux系统如何组织和管理硬件资源至关重要,因为它定义了哪些设备由哪个...

    Linux 的dev目录详解和Linux系统各个目录的作用.docx

    * /dev/random:随机数设备,提供了一个随机数生成器。 * /dev/urandom:随机数设备,提供了一个随机数生成器。 这些设备节点都是通过udev或devf自动创建的,udev会监测sysfs文件系统,获取新创建的设备的信息,...

    Java基础之Random随机数.docx

    Java基础之Random随机数 Java中的随机数使用率非常高,因此掌握随机数的使用是非常重要的。在Java中,Random类提供了产生随机数的方法,下面将详细介绍Random类的使用。 Random类的使用 Random类是Java中生成...

    Shell脚本实现随机数多种方法介绍(date、random、uuid)

    本文将介绍三种在Shell中生成随机数的方法:通过时间戳、利用内置系统变量`$RANDOM`以及使用设备文件`/dev/random`或`/dev/urandom`。 首先,我们来看通过时间获得随机数的方法。Shell中的`date`命令可以输出当前...

    Linux随机数生成器的分析与应用.pdf

    本文主要分析了Linux随机数生成器的工作原理、结构及其在OpenWRT系统中的安全问题,并提出了一些改进措施。 Linux内核中的伪随机数生成器(PRNG)是通过两个设备驱动程序`/dev/random`和`/dev/urandom`来实现的。`/...

    彻底找到 Tomcat 启动速度慢的元凶

    进一步追踪发现,文件描述符51对应的是`/dev/random`,这是Linux系统中的一个随机数生成器。 #### /dev/random与Tomcat启动 `/dev/random`设备文件会根据系统中的“噪声”(如I/O操作、键盘输入、内存使用情况等)...

    c#获取随机,检查随机数是否重复

    /// 随机数最小值</param> /// 是否包含最小值</param> /// 随机数最大值</param> /// 是否包含最大值</param> /// 随机结果数量</param> /// 结果是否重复</param>

    Tomcat重启后,首次访问很慢.md

    - `/dev/random` 设备文件提供真正随机的数据流,当熵池中的随机性不足以满足请求时,读取操作会被阻塞,直到收集到足够的随机性为止。因此,如果应用程序在短时间内需要大量高质量的随机数据,那么可能会遇到性能...

Global site tag (gtag.js) - Google Analytics