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如下:
- 再次运行
enable-secure-admin
- 重新启动域
非常感谢@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