在Glassfish中导入ssl证书

时间:2012-10-12 13:36:03

标签: glassfish ssl-certificate

我有以下问题:

我从comodo(90天)获得了我的glassfish网络应用程序的免费证书,然后我按照http://javadude.wordpress.com/2010/04/06/getting-started-with-glassfish-v3-and-ssl/

将证书导入glassfish 3.1

我还修改了domain.xml文件,将别名s1as替换为我的证书别名,将文件keystore.jks替换为server.keystore ....但是当我尝试使用https协议访问我的Web应用程序时,我得到了以下日志错误:

[#| 2012-10-12T14:41:18.828 + 0200 |警告| glassfish3.1.2 | com.sun.grizzly.config.Gr izzlyServiceListener | _ThreadID = 25; _ThreadName = HTTP线程池-443(1); | GRIZZLY00 07:无法配置SSL支持! java.io.IOException:由于没有可用的证书,SSL配置无效 e或key对应于已启用的SSL密码套件。

请帮助我......我知道在这里我可以找到解决问题的方法......

3 个答案:

答案 0 :(得分:23)

不幸的是,我没有足够的声誉来发布glassfish控制台管理员的图片,但让我尝试帮助某人使用文本。

NOTE1:配置是在Ubuntu 12.04服务器和glassfish 3.1.2上完成的

Comodo为您提供了4个文件

  • your_domain.key(您的私钥)
  • your_domain.crt(您的公钥)
  • PositiveSSLCA2.crt(CA公钥)
  • AddTrustExternalCARoot.crt(CA公钥)

将每个公钥导入文件cacerts.jks。为此,将公钥文件合并到一个文件中:

注2:文件的顺序很重要。

cat your_domain.crt PositiveSSLCA2.crt AddTrustExternalCARoot.crt  > all.crt

现在使用keytool导入它们:

keytool -import -trustcacerts -alias tomcat -file all.crt -keystore cacerts.jks

使用您的私钥创建一个p12文件:

注3:您可以为每个文件使用相同的密码,以简化操作。

openssl pkcs12 -export -in all.crt -inkey your_domain.key -out your_domain.p12 - name your_alias -CAfile PositiveSSLCA2.crt -caname immed

注意4:请勿忘记别名( your_alias ),稍后您需要在glassfish管理控制台中引用它。

现在使用keytool导入私钥:

keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore keystore.jks -srckeystore your_domain.p12 -srcstoretype PKCS12 -srcstorepass changeit -alias your_alias

现在您的 keystore.jks (使用您的私钥)和 cacerts.jks (使用您的公钥)已准备好供我使用。如果你想检查一切是否正常,请运行:

keytool -list -keystore keystore.jks
keytool -list -keystore cacerts.jks

转到glassfish管理控制台并找到会话:

  • 配置 - > server-config-> HTTP服务 - > Http听众 - > http-listener-2

转到SSL标签,将证书NickName 更改为 your_domain

重新启动Glassfish服务器。

答案 1 :(得分:4)

<强>前提条件:

  • 安装了keytool和GlassFish 4.x(默认密钥库密码为changeit
  • 用于生成CSR的源密钥库
    • e.g。 ~/mySourceKeystore.jks密码为myPassword,私钥为myAlias
  • 您的有效证书(从CA获得)
    • e.g。密码为~/myCertificate.crt且别名为myPassword
    • myAlias
  • CA证书(从CA获得)
    • e.g。 ~/AwesomeCA.crt

以下是如何将SSL证书导入GlassFish的所有步骤:

  1. 导航至GLASSFISH-HOME/domains/domain1/config

  2. 将源密钥库(带私钥)导入GlassFish密钥库:

    $ keytool -importkeystore -srckeystore ~/mySourceKeystore.jks -destkeystore keystore.jks`
    Enter destination keystore password: changeit
    Enter source keystore password: myPassword
    Entry for alias server successfully imported.
    Import command completed:  1 entries successfully imported, 0 entries failed or cancelled
    
  3. 将CA的证书导入GlassFish密钥库:

    $ keytool -import -v -trustcacerts -alias AwesomeCA -file ~/AwesomeCA.crt -keystore keystore.jks
    Enter keystore password: changeit
    Certificate was added to keystore
    [Storing keystore.jks]
    
  4. 将获取的SSL证书导入GlassFish密钥库:

    $ keytool -import -v -trustcacerts -alias myAlias -file ~/myCertificate.crt -keystore keystore.jks
    Enter keystore password: changeit
    Enter key password for <myAlias>: myPassword
    Certificate reply was installed in keystore
    [Storing keystore.jks]
    
  5. 此时,GlassFish启动期间会出现错误java.security.UnrecoverableKeyException: Cannot recover key,因为您有不同的密钥库密码和别名密钥密码。要防止出现此错误,您需要执行:

    $ keytool -keypasswd -alias myAlias -new changeit -keystore keystore.jks
    Enter keystore password: changeit
    Enter key password for <myAlias>: myPassword
    
  6. 将GlassFish中的默认别名(s1as)更改为myAlias

    $ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.cert-nickname=myAlias
    
  7. (可选)您可以将GlassFish中的默认SSL端口(8181)更改为众所周知的443

    $ asadmin set server.network-config.network-listeners.network-listener.http-listener-2.port=443
    
  8. 重新启动GlassFish

答案 2 :(得分:1)

对于Glassfish 4.x,您可以关注this Comodo Guide

以下是web archive if链接过期。