0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

無料の App Service マネージド証明書を Azure CLI で試してみた

Posted at

背景と目的

無料の SSL/TLS 証明書と言えば、Let's Encrypt ですが、昔は Azure App Serivce に対して証明書を自動更新するスクリプトを用意して Cron を別環境で動かしていました。現在は無料の App Service マネージド証明書を使用して、自動更新も Azure に任せる方法がとても楽で便利です。ということで、Azure CLI で無料の App Service マネージド証明書を検証してみました。

前提条件

DNS に CNAME レコードを登録する必要があります。今回は Azure DNS を使用しますが、CNAME レコードが登録できて名前解決可能であれば良いです。

検証用の App Service を作成

bash
# 環境変数をセットします
region=japaneast
prefix=mnrappdev
domain=example.jp

# リソースグループを作成します
az group create \
  --name ${prefix}-rg \
  --location $region

# App Service Plan を作成します
az appservice plan create \
  --name ${prefix}-plan \
  --resource-group ${prefix}-rg \
  --sku B1

# WebApp を作成します
az webapp create \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --plan ${prefix}-plan \
  --runtime "PHP|7.4"

# (省略可) 常時接続を有効にします
az webapp config set \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --always-on true

# (省略可) 自分の IP からのみアクセスを許可します
az webapp config access-restriction add \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --priority 100 \
  --rule-name MyIP \
  --action Allow \
  --ip-address $(curl -s inet-ip.info)

# (省略可) WebApp 自身からのループバックアクセスを許可します
az webapp config access-restriction add \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --priority 200 \
  --rule-name AppIP \
  --action Allow \
  --ip-address $(az webapp show \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --query outboundIpAddresses \
  --output tsv)

DNS に CNAME レコードを作成

bash
# WebApp へのアクセス用に CNAME レコードを登録します
az network dns record-set cname set-record \
  --resource-group ${prefix}-rg \
  --zone-name $domain \
  --record-set-name ${prefix} \
  --cname ${prefix}-app.azurewebsites.net

# ドメイン検証用に CNAME レコードを登録します
az network dns record-set cname set-record \
  --resource-group ${prefix}-rg \
  --zone-name $domain \
  --record-set-name awverify.${prefix} \
  --cname awverify.${prefix}-app.azurewebsites.net

ドメインと証明書を登録

bash
# ドメインを登録します
az webapp config hostname add \
  --webapp-name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --hostname ${prefix}.$domain

# マネージド証明書を作成します
az webapp config ssl create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-app \
  --hostname ${prefix}.$domain

# 作成したマネージド証明書をバインドします
az webapp config ssl bind \
  --certificate-thumbprint $(az webapp config ssl show \
  --resource-group ${prefix}-rg \
  --certificate-name ${prefix}.$domain \
  --query thumbprint \
  --output tsv) \
  --resource-group ${prefix}-rg \
  --name ${prefix}-app \
  --ssl-type SNI

# ブラウザでアクセスして確認します
open https://${prefix}.$domain

検証環境を削除

bash
# リソースグループを削除します
az group delete \
  --name ${prefix}-rg \
  --yes

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?