openshift:无法写入“随机状态”

openshift:无法写入“随机状态”

我正在尝试在 openshift 上使用 openssl 生成 CSR。当我使用 SSH 运行命令时,我遇到了这个问题。

openssl genrsa -des3 -out myApp.key 2048
Generating RSA private key, 2048 bit long modulus
...........+++
.....................................................................+++
unable to write 'random state'
e is 65537 (0x10001)

我研究了一下,尝试了一些方法

  1. 切换到数据目录或用户有权限的其他目录,然后执行命令。这不起作用。同样的错误
  2. 有些人建议以 sudo 方式运行此命令。但我无法在 openshift 服务器上执行此操作。
  3. 其他人提到使用此命令 sudo rm ~/.rnd 删除 .rnd 文件,但我再次无法在 openshift 上运行它。

有什么提示吗?我很奇怪为什么这种事情会发生在一个干净的新应用程序上。

答案1

发生此错误的原因是您无权在 Openshift 上的主目录中创建文件。此命令尝试在创建文件,$HOME/.rnd但您看到错误,因为无法创建该文件。

您必须指定openssl使用哪个文件来写入随机状态,并通过导出环境变量来实现$RANDFILE。在 Openshift 上,您可以在目录中写入$OPENSHIFT_DATA_DIR,因此请按如下方式创建命令:

export RANDFILE=$OPENSHIFT_DATA_DIR/.rnd
openssl genrsa -des3 -out $OPENSHIFT_DATA_DIR/myApp.key 2048

答案2

类似的解决方案,但我发现对我来说很明智这里

所以我做了接下来的事情:

mkdir ~/"directory where certificates will be generated" 
cd ~/"directory where certificates will be generated"
touch .rnd
export RANDFILE="~/"directory where certificates will be generated"/.rnd"

现在openssl genrsa -des3 -out server.key 2048命令对我来说可以正常工作。

答案3

我的机器出现这个问题是因为“.rnd”文件的所有者是 root 而不是我的用户。

更改所有者解决了我的问题:

sudo chown $USER:$USER ~/.rnd

相关内容