我是新来的GlassFish和SSL。 我使用的是Ubuntu的14.04服务器和下载certbot。 由于GlassFish服务器不被certbot自动化支持,我安装了一个certbot,汽车独立,并得到了我的新证书文件(cert1.pem chain1.pem fullchain1.pem privkey1.pem)。 我看到一些在线教程约在GlassFish,但没有涉及到certbot。质子交换膜证书安装SSL。 是否有关于安装的GlassFish SSL与产生letsencrypt(.PEM)证书,我可以按照一个很好的教程或指令。
提前致谢
关于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
这里是一个很好的教程开始,让我们加密,Glassfish和AWS EC2。
要(在了情况下,无效的链接)突出关键点:
它遵循他们所描述的certbot文档网站高达
certbot certonly --manual -d example.com
然后是重要的组成部分WRT的GlassFish
安装在Glassfish证书
Glassfish的有一个叫keystore.jks,在这里你需要添加了以前创建的证书和密钥文件。 该文件应位于:
<AS_HOME>/domains/domain1/config/keystore.jks
并为它的默认密码为“的changeit”
添加两个文件密钥库将在2个步骤:将目录切换到Glassfish的config目录
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到密钥库
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
当然,确保所有的参照文件的路径是正确的,同时考虑到当前目录下,当你在运行所有这些命令。
配置Glassfish的HTTPS监听器
现在,一切都设置,所有你需要做的就是登录到Glassfish的管理控制台,并设置相应的HTTP监听器。
Glassfish的有3个HTTP监听器预定义的,下
配置>服务器配置> HTTP服务> HTTP侦听器。
HTTP侦听器2是一个用于HTTPS。 下面的两个设置需要做的工作:
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/ ...