繁体   English   中英

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

[英]Glassfish v4 & SSL - admin no longer works

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

什么是行不通的管理控制台! 自从成功导入SSL后,我无法再连接到管理控制台, http: //www.myhost.com: 4884 ,我仍然可以登录界面,始终有效的管理员用户名/密码组合已经停止工作。 在尝试从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

步骤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,因此您的用户名和密码已经过验证,管理员用户,然后管理控制台本身将使用DN作为用户ID进行验证, s1as密钥作为密码。 这是因为管理控制台通过REST与DAS进行通信,并且需要将自己标识为可信客户端。


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

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

非常感谢@kerfessi和@Mike,你的帖子真的帮我在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM