djava.security.egd=file:/dev//urandom”具体做什么

2ic8powd  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(2159)
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

以上 Dockerfile 示例来自docker的官方 Spring 引导指南。我想知道安全属性是用来做什么的,因为我在本地开发环境中运行应用程序时通常不会设置这个属性,但它似乎出现在各种容器化指南中。干杯!

nfs0ujit

nfs0ujit1#

这个安全属性的目的是加速tomcat的启动。默认情况下,用于在unix系统上的jvm中生成随机数的库依赖于 /dev/random . 在docker容器上没有足够的熵来支持 /dev/random . 看不到足够的熵来支持 /dev/random 在boot2docker中运行的docker容器中。随机数生成器用于会话id生成。把它改成 /dev/urandom 将使启动过程更快。
类似的问题Tomcat7.0.57启动缓慢,因为securerandom

ipakzgxi

ipakzgxi2#

从Java9到Java11(lts),此选项将增加java.security.securerandom类生成的随机数的熵,同时避免意外阻止代码的风险。它配置jvm:
使用 /dev/urandom 在类unix操作系统上的特殊文件,以避免由于缺少熵而意外阻止代码。
使用确定性随机位发生器(drbg)机制
如nist 800-90ar1所述。这些机制实现了与sha-512和aes-256一样强大的现代算法。

相关问题