我已经完成了向glassfish v4添加SSL证书的步骤。我已经验证它可以通过浏览器和我的java swing客户端工作(我在客户端使用apache的http客户端库)
什么是行不通的管理控制台!自成功导入SSL后,我无法再连接到管理控制台http://www.myhost.com:4848,我仍然可以登录界面,始终有效的管理员用户名/密码组合已停止运行。在尝试从netbeans部署Web应用程序时,我也注意到了一些问题,但是我还没有研究过足够的东西来知道它是否是同样的问题。
以下是我添加ssl证书的步骤。这些都直接从glassfish v4安全指南p1-26到p1-29中解除。我确实添加了一个更改主密码的步骤,但我应该早点完成,但我在这里包含它。为了我的隐私,我也在下面的步骤中省略或更改了某些文件夹名称,但除此之外,我已将所有这些复制出终端应用程序。
有谁知道管理员出了什么问题?有一点需要注意 - 遵循glassfish的管理员和安全指南说我可以将s1as别名的ovrwrite。你会注意到我在下面的步骤中使用证书时使用了别名
提前感谢您的帮助!
第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 <s1as>
(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提交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.
答案 0 :(得分:4)
问题几乎可以肯定,s1as证书的可分辨名称(DN
)已更改,但安全管理主体尚未更新。
有一个asadmin命令(enable-secure-admin-principal
)允许您手动更新,但您也可以再次运行enable-secure-admin
(即使已启用安全管理员)。此命令将调用与上一个相同的代码,并使用管理证书别名(s1as)中的正确代码替换安全管理主体。
然后,您需要重新启动GlassFish才能使更改生效,但您可以登录管理控制台。
根本原因是管理控制台基本上与您的登录一起执行双向SSL,因此您的管理员用户验证了您的用户名和密码,然后使用{{1}验证了管理控制台本身}作为用户ID,s1as密钥作为密码。这是因为管理控制台通过REST与DAS进行通信,并且需要将自己标识为可信客户端。
希望所有背景都有帮助,但 TL; DR 如下:
DN
答案 1 :(得分:0)
非常感谢@cotfessi和@Mike,你的帖子确实帮我在Glassfish 4.1中安装了SSL证书......非常感谢!
我只想添加一些我必须做的额外步骤,这些步骤是:
在步骤10之后 - 导入ssl证书
keytool -export -alias s1as -file server.cer -keystore keystore.jks
keytool -delete -alias s1as -keystore cacerts.jks
keytool -import -v -trustcacerts -alias s1as -keystore cacerts.jks -file server.cer
稍后继续第11步 - 重启服务器
我还想添加一些对GoDaddy中购买SSL证书的人有用的信息......
我还想推荐这篇文章,帮助我将HTTP流量重定向到HTTPS,而无需对Glassfish进行额外配置(仅限我的网络应用):how to redirect http to https with glassfish v4