리디렉션 서비스 구축 AWS ALB 패턴, Let’s Encrypt 패턴
13493 단어 letsencryptALB
AWS ALB 패턴
로드 밸런서 -> 목록 -> 규칙 보기/편집
THEN
할 수 있는 예
ㅡㅡㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ 이 m -> htps : // 도마이. 이 m or htps //w w. 도마이안. 이 m
htps : // 도마이. 이 m -> htps : // 어쩌면. 이 m or htps //w w. 도마이안. 이 m
참고
Let’s Encrypt 패턴
운영을 단순화하고 싶습니다.
네이키드 도메인을 www의 서브 도메인으로 리디렉션하고 싶지만, 증명서 설정이 없으면 멈춘다.
htps : // 어쩌면. 이 m -> 브라우저가 화난 (인증서 경고) -> htps //w w. 도마이안. 이 m
www의 서브 도메인은 증명서 비용 없이 운용중.
네이키드 도메인을 www의 서브 도메인으로 리디렉션하고 싶지만, 증명서 설정이 없으면 멈춘다.
htps : // 어쩌면. 이 m -> 브라우저가 화난 (인증서 경고) -> htps //w w. 도마이안. 이 m
www의 서브 도메인은 증명서 비용 없이 운용중.
SSL 필수의 시대가 되어, 증명서 첨부의 네이키드 도메인의 케이스가 증가해 왔다.
네이키드 도메인의 DNS 레코드는 IP 밖에 지정할 수 없기 때문에, 우선 아래와 같은 세트로 대응하고 있었다.
EC2의 한대로
사이트마다, 이중의 설정 작업이나 코스트가 늘어나므로 구성을 바꾸어 보았다.
* 리디렉션용 EC2(IP 지정용)
* 사이트별 Let’s Encrypt 설정(이 정도는 참아)
인증서가 Let’s Encrypt의 webroot 옵션이 되는 이유
/ 에 tc / h tpd / 곤 f. d / 도마이. 이 m. 곤 f
<VirtualHost *:80>
ServerName domain.com
DocumentRoot /var/www/html/domain.com
</VirtualHost>
<VirtualHost *:443>
ServerName domain.com:443
DocumentRoot /var/www/html/domain.com
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem
SSLCertificateKeyFile //etc/letsencrypt/live/domain.com/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/domain.com/chain.pem
</VirtualHost>
/ゔぁr/wㅡw/html/도마이엔. 이 m/그리고 x. HTML
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
しばらくお待ちください。
</body>
</html>
/ゔぁr/wㅡw/html/도마이엔. 이 m/. h 타세스 s
RewriteCond %{REQUEST_URI} !(^/.well-known/) 가 없으면 www.로 리디렉션되기 때문에 발행에 실패한다
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} !^www.
RewriteCond %{REQUEST_URI} !(^/\.well-known/)
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} 443
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
마침내 인증서 발급
certbot-auto certonly --webroot -w /var/www/html/domain.com -d domain.com -m [email protected] --agree-tos
crontab -l
0 3 * * * /usr/bin/certbot-auto renew && /sbin/service httpd reload
메모
/var/www/html/default/.htaccess
/var/www/html/default/index.html
mkdir /var/www/html/{domain}
cp -aT /var/www/html/default /var/www/html/{domain}
감시
cron에 의해 자동 갱신이지만, 가끔 실패하므로 감시는 돌려 둔다
서버 인증서 만료 모니터링
참고
추기 증명서 정기 갱신을 hook로 사용시
cron
10 3 * * * /etc/letsencrypt/renewal/aaa.bbb.info.sh
매일 업데이트 시도
/에 tc/ぇつぇ crypt/레네와 l/아아. 툭 b. 응후. sh
#!/bin/sh
certbot certonly \
-d aaa.bbb.info \
--email [email protected] \
--agree-tos \
--preferred-challenges dns \
--keep-until-expiring \
--text \
--configurator certbot-external-auth:out \
--certbot-external-auth:out-public-ip-logging-ok \
--certbot-external-auth:out-handler /etc/letsencrypt/renewal-hooks/pre/aaa.bbb.info.sh
/sbin/service httpd restart
10 3 * * * /etc/letsencrypt/renewal/aaa.bbb.info.sh
#!/bin/sh
certbot certonly \
-d aaa.bbb.info \
--email [email protected] \
--agree-tos \
--preferred-challenges dns \
--keep-until-expiring \
--text \
--configurator certbot-external-auth:out \
--certbot-external-auth:out-public-ip-logging-ok \
--certbot-external-auth:out-handler /etc/letsencrypt/renewal-hooks/pre/aaa.bbb.info.sh
/sbin/service httpd restart
/에 tc/ぇつぇ crypt/레네와 l-호오 ks/p레/아아. b. 응후. sh
#!/bin/sh
set -e
cmd="$1"
shift
ret=`aws sts assume-role --role-arn arn:aws:iam::xxxx427341:role/route53-register --role-session-name aws3-ec2`
export AWS_ACCESS_KEY_ID=`echo $ret | jq -r .Credentials.AccessKeyId`
export AWS_SECRET_ACCESS_KEY=`echo $ret | jq -r .Credentials.SecretAccessKey`
export AWS_SESSION_TOKEN=`echo $ret | jq -r .Credentials.SessionToken`
case "$cmd" in
perform)
HOSTED_ZONE_ID="/hostedzone/xxxx5NZ9H"
FILENAME=`date "+%Y%m%d%H%M%S"`.json
DIR=/var/log/letsencrypt/
# 環境変数チェック
if [ -z "$domain" ] || [ -z "$validation" ]; then
echo "Undefined environment variable"
exit 1
fi
# 設定用jsonファイルを書き出し
cat <<EOT > $DIR$FILENAME
{
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "_acme-challenge.$domain",
"Type": "TXT",
"TTL": 60,
"ResourceRecords": [
{
"Value": "\"$validation\""
}
]
}
}
]
}
EOT
# jsonファイルをアップロードしてTXTレコードを追加
aws route53 change-resource-record-sets --hosted-zone-id "$HOSTED_ZONE_ID" --change-batch file://$DIR$FILENAME
# DNS反映待ち
sleep 60
;;
*)
;;
esac
Reference
이 문제에 관하여(리디렉션 서비스 구축 AWS ALB 패턴, Let’s Encrypt 패턴), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mkawanee/items/07330214beba1fc9c2d2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)