为什么MongoDB(使用SSL)多次要求使用.pem密码短语?

为什么MongoDB(使用SSL)多次要求使用.pem密码短语?,mongodb,ssl,Mongodb,Ssl,我使用以下命令启动MongoDB(我最终将添加到脚本中): 之后,mongo将提示: 输入PEM密码短语 这很好,但输入正确的密码短语后,它会再次询问。一次又一次 Mongo连续五次请求PEM密码 我知道我输入的密码是正确的,因为如果我只输入了一次错误的密码,就会收到一条失败消息 这正常吗?除了从pem文件中删除密码外,还有其他方法可以简化此过程吗 我的最终目标是让我的spring boot应用程序在本地MongoDB还没有运行的情况下用SSL启动它,但是要求5次密码是荒谬的 版本信息: Mo

我使用以下命令启动MongoDB(我最终将添加到脚本中):

之后,mongo将提示:

输入PEM密码短语

这很好,但输入正确的密码短语后,它会再次询问。一次又一次

Mongo连续五次请求PEM密码 我知道我输入的密码是正确的,因为如果我只输入了一次错误的密码,就会收到一条失败消息

这正常吗?除了从pem文件中删除密码外,还有其他方法可以简化此过程吗

我的最终目标是让我的spring boot应用程序在本地MongoDB还没有运行的情况下用SSL启动它,但是要求5次密码是荒谬的

版本信息:

  • MongoDB外壳版本3.4.4
  • git版本:888390515874a9debd1b6c5d36559ca86b44babd
  • OpenSSL版本:OpenSSL 0.9.8zh 2016年1月14日
  • 分配器:系统
  • 模块:无
  • 构建环境:
    • 搜索区:x86_64
    • 目标搜索:x86搜索64

您可能需要通过指定

要使用配置文件启动mongod,可以使用以下命令:

mongod --config /etc/mongod.conf
您需要在以下结构中指定PEMKeyPassword

net:
   port: <int>
   bindIp: <string>
   maxIncomingConnections: <int>
   wireObjectCheck: <boolean>
   ipv6: <boolean>
   unixDomainSocket:
      enabled: <boolean>
      pathPrefix: <string>
      filePermissions: <int>
   http:
      enabled: <boolean>
      JSONPEnabled: <boolean>
      RESTInterfaceEnabled: <boolean>
   ssl:
      sslOnNormalPorts: <boolean>  # deprecated since 2.6
      mode: <string>
      PEMKeyFile: <string>
      PEMKeyPassword: <string>
      clusterFile: <string>
      clusterPassword: <string>
      CAFile: <string>
      CRLFile: <string>
      allowConnectionsWithoutCertificates: <boolean>
      allowInvalidCertificates: <boolean>
      allowInvalidHostnames: <boolean>
      disabledProtocols: <string>
      FIPSMode: <boolean>
   compression:
      compressors: <string>
net:
端口:
宾迪普:
最大输入连接:
wireObjectCheck:
ipv6:
unixDomainSocket:
启用:
路径前缀:
文件权限:
http:
启用:
JSONPEnabled:
可恢复的:
ssl:
sslOnNormalPorts:#自2.6版以来已弃用
模式:
PEMKeyFile:
密码:
群集文件:
群集密码:
卡菲尔:
CRLFile:
AllowConnectionswithout证书:
allowInvalidCertificates:
AllowInvalidHostName:
禁用的协议:
FIPSMode:
压缩:
压缩机:

启动mongod时是否尝试指定PEMKeyPassword选项?谢谢,我没有尝试过!虽然这确实会阻止mongo多次询问密码,但它也会在终端历史记录中保留私钥的密码。将其添加为答案以供进一步参考,如果您能够接受,我们将不胜感激。这确实会阻止mongo多次询问密码,但是,在终端历史记录中保留私钥密码不是最佳做法。我会给这个问题一天时间,希望在接受这个答案之前,能找到一个更理想的解决方案。谢谢实际上,您应该使用一个配置文件来启动mongod实例,这样您的密码就不会出现在终端历史记录中。把这个加在你的答案上,我会接受的。加上@Allen:)谢谢你的帮助!
net:
   port: <int>
   bindIp: <string>
   maxIncomingConnections: <int>
   wireObjectCheck: <boolean>
   ipv6: <boolean>
   unixDomainSocket:
      enabled: <boolean>
      pathPrefix: <string>
      filePermissions: <int>
   http:
      enabled: <boolean>
      JSONPEnabled: <boolean>
      RESTInterfaceEnabled: <boolean>
   ssl:
      sslOnNormalPorts: <boolean>  # deprecated since 2.6
      mode: <string>
      PEMKeyFile: <string>
      PEMKeyPassword: <string>
      clusterFile: <string>
      clusterPassword: <string>
      CAFile: <string>
      CRLFile: <string>
      allowConnectionsWithoutCertificates: <boolean>
      allowInvalidCertificates: <boolean>
      allowInvalidHostnames: <boolean>
      disabledProtocols: <string>
      FIPSMode: <boolean>
   compression:
      compressors: <string>