Glassfish ssl安装与certbot
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Glassfish ssl安装与certbot相关的知识,希望对你有一定的参考价值。
我是glassfish和ssl的新手。我使用的是ubuntu 14.04服务器并下载了certbot。由于certbot自动化不支持glassfish服务器,我安装了一个certbot-auto独立版并获得了我的新证书文件(cert1.pem chain1.pem fullchain1.pem privkey1.pem)。我在网上看到了一些关于在glassfish上安装ssl但没有与certbot .pem证书相关的教程。是否有关于使用生成的letsencrypt(.pem)证书安装glassfish ssl的良好教程或说明,我可以遵循。
提前致谢
关于certbot glassfish问题,解决方案可以按如下方式完成:用适当的值替换所有[##]并保存批处理文件然后运行它
#!/bin/sh
#replace [##] with the correct value
#Alias of the certificate
NAME=[##]
#The current domain registered in letsencrypt
DOMAIN=[##]
#The keystore password, default is (changeit)
KEYSTOREPW=[##]
#Glassfish server location e.g. /home/glassfish/domains/domain1
GFDOMAIN=[##]
LIVE=/etc/letsencrypt/live/$DOMAIN
mkdir etc
cd etc
sudo openssl pkcs12 -export -in $LIVE/cert.pem -inkey $LIVE/privkey.pem -out cert_and_key.p12 -name $NAME -CAfile $LIVE/chain.pem -caname root -password pass:$KEYSTOREPW
sudo keytool -importkeystore -destkeystore keystore.jks -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -alias $NAME -srcstorepass $KEYSTOREPW -deststorepass $KEYSTOREPW -destkeypass $KEYSTOREPW
sudo keytool -import -noprompt -trustcacerts -alias root -file $LIVE/chain.pem -keystore keystore.jks -srcstorepass $KEYSTOREPW -deststorepass $KEYSTOREPW -destkeypass $KEYSTOREPW
sudo openssl pkcs12 -export -in $LIVE/fullchain.pem -inkey $LIVE/privkey.pem -out pkcs.p12 -name glassfish-instance -password pass:$KEYSTOREPW
sudo keytool -importkeystore -destkeystore keystore.jks -srckeystore pkcs.p12 -srcstoretype PKCS12 -alias glassfish-instance -srcstorepass $KEYSTOREPW -deststorepass $KEYSTOREPW -destkeypass $KEYSTOREPW
sudo openssl pkcs12 -export -in $LIVE/fullchain.pem -inkey $LIVE/privkey.pem -out pkcs.p12 -name s1as -password pass:$KEYSTOREPW
sudo keytool -importkeystore -destkeystore keystore.jks -srckeystore pkcs.p12 -srcstoretype PKCS12 -alias s1as -srcstorepass $KEYSTOREPW -deststorepass $KEYSTOREPW -destkeypass $KEYSTOREPW
sudo openssl pkcs12 -export -in $LIVE/cert.pem -inkey $LIVE/privkey.pem -out cert_and_key.p12 -name $NAME -CAfile $LIVE/chain.pem -caname root -password pass:$KEYSTOREPW
sudo keytool -importkeystore -destkeystore cacerts.jks -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -alias $NAME -srcstorepass $KEYSTOREPW -deststorepass $KEYSTOREPW -destkeypass $KEYSTOREPW
sudo keytool -import -noprompt -trustcacerts -alias root -file $LIVE/chain.pem -keystore cacerts.jks -srcstorepass $KEYSTOREPW -deststorepass $KEYSTOREPW -destkeypass $KEYSTOREPW
sudo openssl pkcs12 -export -in $LIVE/fullchain.pem -inkey $LIVE/privkey.pem -out pkcs.p12 -name glassfish-instance -password pass:$KEYSTOREPW
sudo keytool -importkeystore -destkeystore cacerts.jks -srckeystore pkcs.p12 -srcstoretype PKCS12 -alias glassfish-instance -srcstorepass $KEYSTOREPW -deststorepass $KEYSTOREPW -destkeypass $KEYSTOREPW
sudo openssl pkcs12 -export -in $LIVE/fullchain.pem -inkey $LIVE/privkey.pem -out pkcs.p12 -name s1as -password pass:$KEYSTOREPW
sudo keytool -importkeystore -destkeystore cacerts.jks -srckeystore pkcs.p12 -srcstoretype PKCS12 -alias s1as -srcstorepass $KEYSTOREPW -deststorepass $KEYSTOREPW -destkeypass $KEYSTOREPW
# ====== Download latest list of cacert and import it into the cacerts.jks ========== #
wget https://curl.haxx.se/ca/cacert.pem --no-check-certificate -O cacert.pem
PEM_FILE=cacert.pem
KEYSTORE=cacerts.jks
# number of certs in teh PEM file
CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l)
# For every cert in the PEM file, extract it and import into the JKS keystore
# awk command: step 1, if line is in the desired cert, print the line
# step 2, increment counter when last line of cert is found
for N in $(seq 0 $(($CERTS - 1))); do
ALIAS="${PEM_FILE%.*}-$N"
cat $PEM_FILE |
awk "n==$N { print }; /END CERTIFICATE/ { n++ }" |
keytool -noprompt -import -trustcacerts
-alias $ALIAS -keystore $KEYSTORE -storepass $KEYSTOREPW
done
# ==================================================================================== #
sudo keytool -list -keystore keystore.jks -storepass $KEYSTOREPW
sudo keytool -list -keystore cacerts.jks -storepass $KEYSTOREPW
if [ ! -f $GFDOMAIN/config/keystore-orig.jks ]; then
echo "Backing up original files..."
sudo cp -f $GFDOMAIN/config/keystore.jks $GFDOMAIN/config/keystore-orig.jks
sudo cp -f $GFDOMAIN/config/cacerts.jks $GFDOMAIN/config/cacerts-orig.jks
fi
echo "Updating certificates..."
sudo cp -f keystore.jks $GFDOMAIN/config/keystore.jks
sudo cp -f cacerts.jks $GFDOMAIN/config/cacerts.jks
cd ..
sudo rm -rf etc
这是关于Let's Encrypt,Glassfish和AWS EC2的优秀tutorial。
突出显示关键点(如果链接不再有效):
它遵循他们的website上描述的certbot文档
certbot certonly --manual -d example.com
然后是重要的部分w.r.t. GlassFish的
Installing the certificate on Glassfish
Glassfish有一个名为keystore.jks的文件,您需要在其中添加以前创建的证书和密钥。该文件应位于:
<AS_HOME>/domains/domain1/config/keystore.jks
它的默认密码是'changeit'
将两个文件添加到密钥库的过程分为两步:将目录更改为glassfish配置目录
cd <AS_HOME>/domains/domain1/config/
从2个文件创建密钥库
创建包含完整链和私钥的.pkcs12文件
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out pkcs.p12 -name letsencryptcrt
您将为此文件设置密码,您需要在下一步(STORE_PASS)中指定该密码。
将PKCS12转换为Keystore
keytool -importkeystore -deststorepass PASSWORD_STORE -destkeypass PASSWORD_KEYPASS -destkeystore letsencrypt.jks -srckeystore pkcs.p12 -srcstoretype PKCS12 -srcstorepass STORE_PASS -alias letsencryptcrt
我建议将所有这些密码(PASSWORD_STORE,PASSWORD_KEYPASS和STORE_PASS)设置为与原始keystore.jks的密码相同,因为在下一点,源和目标密钥库的密码必须相同。
将创建的密钥库导入Glassfish的密钥库
keytool -importkeystore -srckeystore letsencrypt.jks -destkeystore keystore.jks
当然,在运行所有这些命令时,请确保所有引用文件的路径都是正确的,并考虑当前目录。
Configuring the Glassfish HTTPS listener
现在一切都已设置完毕,您需要做的就是登录Glassfish管理控制台并设置相应的HTTP侦听器。
Glassfish预定义了3个HTTP侦听器
配置> server-config> HTTP服务> HTTP侦听器。
http-listener-2是HTTPS的一个。需要完成以下2个设置:
Set the port to 443 (HTTPS port)
In the SSL tab, set the Certificate NickName to letsencryptcrt and the Key Store to keystore.jks
单击“保存”,重新启动Glassfish实例,您就完成了。您现在应该可以通过https://example.com/访问任何已部署的应用程序...
以上是关于Glassfish ssl安装与certbot的主要内容,如果未能解决你的问题,请参考以下文章
免费SSL证书Let's Encrypt(certbot)安装使用教程
Certbot给网站域名申请免费SSL证书 及Nginx配置