将证书导入Glassfish并更改主密码

时间:2014-10-02 21:08:24

标签: glassfish passwords certificate keystore master

我一直在尝试使用使用Glassfish的应用程序来帮助我们的某个网站时收到错误消息。登录应用程序时,会引发以下错误:

CommunicationException:发出HTTP请求时发生错误。这可能是由于服务器证书在客户端和服务器之间没有configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the安全绑定这一事实。

在Server.log中,显示以下内容:

0400 | SEVERE | glassfish3.1 | com.sun.grizzly.config.GrizzlyServiceListener | _ThreadID = 287; _TreadName = Thread-1; |无法加载带路径C的密钥库类型JKS:\ glassfishv3 \ glassfish \ domains \ domain1 / key / keystore.jks由于Keystore被篡改,或密码不正确 java.io.IOException:密钥库被篡改,或密码不正确

该网站在更改glassfish主密码时才遇到此问题。当主密码保留为默认设置时,一切正常。默认主密码为" changeit"。

此外,该网站还会生成并导入用于glassfish的证书。以下是按顺序执行以生成证书和更改密码的步骤:

  1. 停止Glassfish服务。

  2. 已打开MMC.MSC:操作 - >所有任务 - >申请新证书

  3. 从“证书注册”向导中,选择“计算机类型”证书。单击“属性”按钮并配置证书。它得到一个友好的名字" s1as"密钥大小为2048的可导出私钥。私钥导出为pfx文件,证书导出为cer文件。这些文件保存在glassfish配置文件夹中。如果需要,可以提供有关此流程的详细信息。

  4. 打开DOS提示符,此命令在glassfish配置文件夹中运行: keytool -delete -alias s1as -keystore keystore.jks -storepass changeit

  5. 执行以下命令: keytool -import -v -trustcacerts -alias -file root.cer -keystore cacerts.jks -storepass changeit

  6. 回答" Y"信任证书。

    1. 使用以下命令将原始自签名证书替换为pfx证书。 keytool -importkeystore -srckeystore .pfx -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype JKS
    2. 输入密码,之后会出现成功消息,表明已成功导入1个条目。

      1. 执行此命令: keytool -list -keystore keystore.jks -rfc
      2. 产生了大量输出,包括一个长别名。在下一个命令中使用了长别名。

        1. 运行以下命令: keytool -changealias -alias"" -destalias" s1as" -keypass changeit -keystore keystore.jks -storepass changeit

        2. 在asadmin中运行以下命令: change-master-password --savemasterpassword = true 输入当前密码" changeit" 输入新密码123456 重新输入123456。 主密码成功更改的成功消息。

          1. 开始使用glassfish服务
        3. 在我的本地测试中,此过程已经起作用,我可以使用该应用程序而没有错误。但是在我帮助的网站上,当他们按照相同的流程进行操作时,他们会收到我在此邮件顶部列出的错误。

          我的具体问题:

          网站的证书是否会导致此问题?如果是这样,有没有办法可以测试证书是否存在问题?

          还有哪些其他因素可能会产生错误?可以"更改主密码"命令没有正确更改密码,还是还有其他东西需要更改密码?

1 个答案:

答案 0 :(得分:6)

我找到了解决方法,如果将来有人遇到我遇到的同样的问题,我会在这里发布。希望有一天这会让人感到非常沮丧。

在domain.xml中,需要在jvm-options区域中添加以下两行。

  <jvm-options>-Djavax.net.ssl.keyStorePassword=[password]</jvm-options>
  <jvm-options>-Djavax.net.ssl.trustStorePassword=[password]</jvm-options>