Glassfish v4和SSL – 管理员不再有效

我已经完成了将步骤添加到glassfish v4中的SSL证书。 我已经validation它可以通过浏览器和我的java swing客户端工作(我在客户端使用apache的http客户端库)

什么不起作用是管理控制台! 由于成功导入SSL,我无法再连接到管理控制台, http: //www.myhost.com: 4884 ,我仍然可以登录界面,始终有效的管理员用户名/密码组合已停止工作。 在尝试从netbeans部署Web应用程序时,我也注意到了一些问题,但是我还没有研究过足够的东西来知道它是否是同样的问题。

以下是我添加ssl证书的步骤。 这些是直接从glassfish v4安全指南p1-26到p1-29中提取的。 我确实添加了一个更改主密码的步骤,但我应该早点完成,但我在这里包含它。 为了我的隐私,我也在下面的步骤中省略或更改了某些文件夹名称,但除此之外,我已将所有这些复制出终端应用程序。

有谁知道管理员出了什么问题? 有一点需要注意 – 遵循glassfish的管理员和安全指南说我可以将s1as别名列入。 您会注意到我在使用以下步骤中的证书时使用了该别名

在此先感谢您的帮助!

第1步 – 停止服务器

/usr/home/myhost 110 % glassfish4/bin/asadmin stop-domain domain1 Waiting for the domain to stop . Command stop-domain executed successfully. 

第2步 – 更新主密码

 /usr/home/myhost 110 % glassfish4/bin/asadmin Use "exit" to exit and "help" for online help. asadmin> change-master-password domain1 Enter the current master password> Enter the new master password> Enter the new master password again> Command change-master-password executed successfully. asadmin> exit Command multimode executed successfully. 

第3步 – 切换到密钥文件的目录

 /usr/home/myhost 111 % cd glassfish4/glassfish/domains/domain1/config/ 

第4步 – 从密钥库中删除s1as

 /usr/home/myhost/glassfish4/glassfish/domains/domain1/config 113 % keytool -delete -alias s1as -keystore keystore.jks Enter keystore password: 

步骤5 – 生成新密钥对

 /usr/home/myhost/glassfish4/glassfish/domains/domain1/config 114 % keytool -genkey -alias s1as -keyalg RSA -keystore keystore.jks -keysize 2048 Enter keystore password: What is your first and last name? [Unknown]: www.myhost-dev.com What is the name of your organizational unit? [Unknown]: development What is the name of your organization? [Unknown]: myhost, inc What is the name of your City or Locality? [Unknown]: mycity What is the name of your State or Province? [Unknown]: mystate What is the two-letter country code for this unit? [Unknown]: us Is CN=www.myhost-dev.com, OU=development, O="myhost, inc", L=mycity, ST=mystate, C=us correct? Enter key password for  (RETURN if same as keystore password): 

第6步 – 生成证书签名请求(CSR)

 /usr/home/myhost/glassfish4/glassfish/domains/domain1/config 115 % keytool -certreq -alias s1as -file toSymantec02.csr -keystore keystore.jks Enter keystore password: 

第7步 – 向赛门铁克提交CSR

步骤8 – 将symantec中的中间件和ssl证书复制到config目录中

第9步 – 导入中间证书

 /usr/home/myhost/glassfish4/glassfish/domains/domain1/config 115 % keytool -import -trustcacerts -alias Intermediate -keystore keystore.jks -file IntermediateCA.crt Enter keystore password: Certificate was added to keystore 

第10步 – 导入ssl证书

 /usr/home/myhost/glassfish4/glassfish/domains/domain1/config 116 % keytool -import -trustcacerts -alias s1as -keystore keystore.jks -file ssl_certificate.crt Enter keystore password: Certificate reply was installed in keystore 

步骤11 – 重新启动服务器

 /usr/home/myhost 118 % glassfish4/bin/asadmin start-domain domain1 Enter master password (3) attempt(s) remain)> Waiting for domain1 to start ............................... Successfully started the domain : domain1 domain Location: /usr/home/myhost/glassfish4/glassfish/domains/domain1 Log File:/usr/home/myhost/glassfish4/glassfish/domains/domain1/logs/server.log Admin Port: 4848 Command start-domain executed successfully. 

问题几乎可以肯定,s1as证书的可分辨名称( DN )已更改,但安全管理主体尚未更新。

有一个asadmin命令( enable-secure-admin-principal )允许您手动更新它,但您也可以再次运行enable-secure-admin (即使已启用安全管理员)。 此命令将调用与前一个相同的代码,并使用管理证书别名(s1as)中的正确代码替换安全管理主体。

然后,您需要重新启动GlassFish才能使更改生效,但您将能够登录管理控制台。

根本原因是管理控制台基本上与您的登录一起执行双向SSL,因此您的用户名和密码已经过validation,管理员用户,然后管理控制台本身将使用DN作为用户ID进行validation, s1as密钥作为密码。 这是因为管理控制台通过REST与DAS通信,需要将自己标识为可信客户端。


希望所有背景都有帮助,但TL; DR如下:

  1. 再次运行enable-secure-admin
  2. 重新启动域

非常感谢@cotfessi和@Mike,你的post确实帮我在Glassfish 4.1中安装了SSL证书……非常感谢!

我只想添加一些我必须做的额外步骤,它们是:

第10步之后– 导入ssl证书

  • 从keystore.jks导出别名s1as

keytool -export -alias s1as -file server.cer -keystore keystore.jks

  • 从cacerts.jks中删除别名s1as

keytool -delete -alias s1as -keystore cacerts.jks

  • 使用server.cer将别名s1as导入cacerts.jks

keytool -import -v -trustcacerts -alias s1as -keystore cacerts.jks -file server.cer

稍后继续步骤11 – 重启服务器


我还想添加一些对GoDaddy中购买SSL证书有用的信息……

  • 好吧,我在GoDaddy购买了SSL,我不得不把它们发送给我(CSR),因为@cotfessi在步骤6步骤7中描述了,所以我收到了电子邮件,并附上了一些带有证书的zip下载说明,所以当我去下载它我发现他们有一个列表选项,表示服务器类型 ,它有多个选项,如Apache,Tomcat,IIS ……和其他,所以我选择了另一个选项并下载了zip,当我提取它时我注意到有2个文件,一个名为4a0BlaBlaBlaBla8.crt( Bla仅用于exaple目的),其中只包含一个带有— BEGIN / END CERTIFICATE —的部分,另一个文件的名称类似于gd_bundle-g2-g1。 crt包含3 — BEGIN / END CERTIFICATE —部分,所以我使用4a0BlaBlaBlaBla8.crt作为我的ssl_certificate.crt和gd_bundle-g2-g1.crt作为我的IntermediateCA.crt。 我想分享一下,因为GoDaddy用户可能有点混淆(我认为…)

我还想推荐这篇文章,帮助我将我的HTTP流量重定向到HTTPS,而无需对Glassfish进行额外配置(仅限于我的Web应用程序): 如何使用glassfish v4将http重定向到https