我有一个旧的Play Framework,它服务于两个CDN (siteassets和courseassets)的资产,这些资产是用AWS CloudFront实现的。庞德运行在与webapp相同的VM上,只是充当SSL端点,因为使用的旧版本Play框架不处理SSL。英镑与80和443港口绑定。Play webapp绑定到端口9000。
以前,我对CDN资产和webapp使用了赛门铁克SSL通配符证书。现在赛门铁克SSL证书只剩下几天就不再有效了,我决定使用AWS证书管理器为CDN提供单域SSL证书,并使用Letsencrypt为few应用程序提供单域SSL证书。Letsencrypt证书只持续90天,因此需要自动刷新。
庞德想要PEM格式的SSL证书,但Letsencrypt似乎没有提供PEM格式的方便方法。和Apache、Tomcat或其他著名的框架一样,Letsencrypt对Play Framework没有任何特殊的规定。
为了更新庞德使用的SSL证书,我不想让webapp脱机。
下面是我当前的庞德版/etc/pound/pound.cfg 2.7f-0ubuntu1。这种配置已经有几年的历史了,可能需要更新,磅也应该更新。
# Global options
User "root"
Group "root"
# Logging: (goes to syslog by default)
# 0 no logging
# 1 normal
# 2 extended
# 3 Apache-style (common log format)
# 4 (same as 3 but without the virtual host information)
# 5 (same as 4 but with information about the Service and BackEnd used)
LogLevel 5
# Check backend every X secs:
Alive 30
# Use hardware-accelleration card supported by openssl(1):
#SSLEngine ""
# poundctl control socket
Control "/var/run/poundctl.socket"
# Redirect all http requests on port 80 to https on port 443
# The Play Framework webapp never sees these redirected requests because Pound handles them
ListenHTTP
Address 0.0.0.0
Port 80
Err500 "/usr/local/etc/pound_error_500"
Err503 "/usr/local/etc/pound_error_500"
Service
Redirect 301 "https://www.scalacourses.com"
End
End
# Redirect all requests on port 443 to the Play Framework webapp on port 9443
ListenHTTPS
Address 0.0.0.0
Port 443
Err500 "/usr/local/etc/pound_error_500"
Err503 "/usr/local/etc/pound_error_500"
Cert "/var/work/training/cadenza/conf/ssl/scalacourses.com.pound.pem"
Disable SSLv3
Ciphers "EECDH+ECDSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:ECDH+AESGCM:ECDH+AES256:ECDH+AES128:ECDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!eNULL:!LOW:!aNULL:!MD5:!DSS"
SSLAllowClientRenegotiation 0
SSLHonorCipherOrder 1
HeadRemove "X-Forwarded-Proto"
HeadRemove "x-forwarded-proto"
AddHeader "x-forwarded-proto: https"
Service
BackEnd
#HTTPS
Address 127.0.0.1
Port 9000
End
End
Endsudo apt install certbot安装的,我看到certbot版本0.21.0是可用的。我应该使用这个更新的版本而不是Ubuntu17.10提供的默认版本吗?/etc/pound/pound.cfg中的磅配置需要哪些更改?很明显,这行需要更新:Cert "/var/work/training/cadenza/conf/ssl/scalacourses.com.pound.pem",在更新庞德时,这一行可能需要更新:Ciphers "EECDH+ECDSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:ECDH+AESGCM:ECDH+AES256:ECDH+AES128:ECDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!eNULL:!LOW:!aNULL:!MD5:!DSS",可能需要添加、删除或修改哪些其他行?我知道庞德不应该像root那样运行,但这可以单独处理。发布于 2018-02-21 23:36:19
certbot运行良好,不需要最新版本。Cert行,这是有意义的,因为我还没有(还)升级磅。下面是certbot53,我编写了一个脚本,通过DNS挑战使用jed/certbot-路由53进行身份验证。这个脚本依赖于我提交给certbot-route53的一个D15,它修复了两个bug。
#!/bin/bash
#STAGING=--staging
CERT_DIR=/etc/pound/certbot
DOMAIN=scalacourses.com
MAIL_ADDR='mslinn@scalacourses.com'
SCRIPT_NAME=certbot-route53.sh
if [ ! -d "$CERT_DIR/letsencrypt" ]; then sudo mkdir -p $CERT_DIR/letsencrypt; fi
sudo chmod 777 "$CERT_DIR/letsencrypt"
cd $CERT_DIR
if [ ! -f "$CERT_DIR/$SCRIPT_NAME" ]; then
sudo curl -sL https://git.io/vylLx -o $SCRIPT_NAME
sudo chmod a+x certbot-route53.sh
fi
./$SCRIPT_NAME \
--agree-tos \
--manual-public-ip-logging-ok \
--domains $DOMAIN,www.$DOMAIN \
--renew-by-default \
--email $MAIL_ADDR $STAGING
PRIV_KEY="$CERT_DIR/letsencrypt/live/$DOMAIN/privkey.pem"
FULL_CHAIN="$CERT_DIR/letsencrypt/live/$DOMAIN/fullchain.pem"
COMBINED="$CERT_DIR/combined-for-pound.pem"
cat "$PRIV_KEY" "$FULL_CHAIN" | sudo tee "$COMBINED" > /dev/nullcron条目,它每两个月将脚本作为我的userid运行一次;在输入sudo crontab -e:0 0 1 */2 * su mslinn /usr/local/bin/certbot53之后,我输入了这个条目https://serverfault.com/questions/897909
复制相似问题