给glassfish4配置和导入可信ssl证书
(内伤)之前开了个WTFGame的服,搭建完给其上ssl时发现,glassfish面板没有设置证书的地方,百度N下发现说的乱七八糟而且都是自己重新签发一个证书而不是用第三方机构签发的可信证书,自己尝试了一些方法无效,然后放弃了,最近云盾开始让备案了,我的域名被回源了,准备把wtf面板放在自己自建的cdn上,然后又想起了ssl的事情,弄了一下午终于发现了配置方法(这种配置方法搞JAVA的肯定要猝死).
准备材料
- linux机器一个
- glassfish4
- 第三方机构签发的证书
前言
首先是公钥和私钥的解释,一句话简单明了,crt就是公钥,key就是私钥.
然后是下面导入用到的密码是glassfish默认密码:changeit,如果你改过就需要用你自己的密码.
公钥的合并与导入
glassfish搭建不再叙述.
首先如果证书有ca的公钥的话需要将两个公钥合并,如果得到的公钥后缀为pem则证书应该是已经合并好的.
然后将合并好的公钥导入到cacert.jks里路径为/glassfish4/glassfish/domains/domain1/config
,其中domain1是我的实例名,可能不一样.
keytool -import -trustcacerts -alias shira -file wtf.crt -keystore cacerts.jks
其中-alias shira
的shira是公钥的别名,这个随意.
制作p12的证书
p12证书用于后面的导入私钥,目前我只有这个办法导入私钥.
openssl pkcs12 -export -in wtf.pem -inkey wtf.key -out wtf.p12 -name wtf
其中wtf.pem和wtf.key分别是合并好的公钥和私钥,而wtf.p12是生成的p12证书名,-name wtf
的wtf是别名,这需要记住接下来会用到,密码则建议和glassfish的默认密码一样,方便后续私钥导入.
将p12导入
keystore.jks和cacert.jks在同一目录下
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore keystore.jks -srckeystore wtf.p12 -srcstoretype PKCS12 -srcstorepass changeit -alias wtf
这里如果之前修改过glassfish的默认密码或者p12使用了其他密码则需要修改命令里对应的密码部分
检查导入的公钥和私钥(非必要)
keytool -list -keystore keystore.jks
keytool -list -keystore cacerts.jks
看到刚刚导入时的别名就代表导入成功了.
配置https的证书
首先切换到Configurations->server-config->HTTP Service->Http Listeners->http-listener-2
然后切换到ssl选项卡,其中NickName填写刚刚导入私钥时的别名,注意,是私钥的别名而不是公钥的.
然后点击保存并重启你的glassfish使keystore和cacerts生效.