11

我有以下问题:

我从 comodo(90 天)为我的 glassfish Web 应用程序获得了一个免费证书,然后我按照http://javadude.wordpress.com/2010/04/06/getting-started-with-将证书导入到 glassfish 3.1 中glassfish-v3-and-ssl/

我还修改了 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-thread-pool-443(1);| GRIZZLY00 07:无法配置 SSL 支持!java.io.IOException: SSL 配置无效,因为没有可用的证书或密钥对应于已启用的 SSL 密码套件。

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

4

3 回答 3

28

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

注意1:配置是在 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 Listeners->http-listener-2

转到 SSL 选项卡并将证书昵称更改为your_domain

重新启动 Glassfish 服务器。

于 2013-06-12T12:08:03.597 回答
4

前提条件:

  • 安装了 keytool 和 GlassFish 4.x(使用默认密钥库密码changeit
  • 您用于生成 CSR 的源密钥库
    • 例如~/mySourceKeystore.jks使用密码myPassword和带有别名的私钥myAlias
  • 您的有效证书(从 CA 获得)
    • 例如~/myCertificate.crt使用密码myPassword和别名myAlias
  • CA 证书(从 CA 获得)
    • 例如~/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. 此时java.security.UnrecoverableKeyException: Cannot recover keyGlassFish 启动过程中会出现错误,因为您的密钥库密码和别名密钥密码不同。为防止出现此错误,您需要执行:

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

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

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

于 2017-04-06T16:14:33.837 回答
1

对于 Glassfish 4.x,您可以遵循此 Comodo 指南

如果链接过期,这是网络存档。

于 2016-10-18T19:43:50.417 回答