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. 有些人build议以sudo的方式运行这个命令。 但是我不能在openshift服务器上这样做
  3. 其他人提到使用这个命令删除.rnd文件sudo rm〜/ .rnd,而且我不能在openshift上运行这个。

任何指针? 我很困惑,这是一个干净的新应用程序正在发生。

发生此错误是因为您不允许在您的主目录中创build文件在Openshift上。 这个命令试图在$HOME/.rnd创build一个文件,并且你看到错误,因为这个文件不能被创build。

您必须告诉openssl使用哪个文件来编写随机状态,并通过导出$RANDFILE环境variables来实现。 在Openshift上,你可以写入$OPENSHIFT_DATA_DIR目录,所以创build命令如下:

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

类似的解决scheme,但对我来说,我发现这里的精明。

所以我做了下一个:

 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命令为我工作正常。

在我的机器给我这个问题,因为“.rnd”文件是由根而不是我的用户拥有。

改变主人解决了我的问题:

 sudo chown $USER:$USER ~/.rnd