1

我是 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的良好教程或说明。

提前致谢

4

2 回答 2

0

关于 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
于 2017-05-24T08:35:59.967 回答
0

这是关于 Let's Encrypt、Glassfish 和 AWS EC2 的一个很好的教程。

要突出显示关键点(以防链接不再有效):

它遵循他们网站上描述的certbot文档

certbot certonly --manual -d example.com

然后是玻璃鱼的重要部分

在 Glassfish 上安装证书

Glassfish 有一个名为 keystore.jks 的文件,您需要在其中添加之前创建的证书和密钥。该文件应位于:

<AS_HOME>/domains/domain1/config/keystore.jks

它的默认密码是“changeit”

将这两个文件添加到密钥库是一个 2 步过程: 将目录更改为 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 转换为密钥库

  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-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/访问任何已部署的应用程序...

于 2017-12-22T20:09:38.163 回答