Skip to content

Latest commit

 

History

History
168 lines (102 loc) · 8.34 KB

README_ja.md

File metadata and controls

168 lines (102 loc) · 8.34 KB

Key Vault Acmebot

Build Release License

これは Azure Key Vault 向けに ACME を使い SSL/TLS 証明書の発行と更新を自動化するためのアプリケーションです。証明書は Azure Key Vault に格納されます。Azure App Service, Application Gateway , CDN などの多くの Azure サービスで Key Vault から直接証明書をインポート可能です。

以下のような課題を解決するために開始しました。

  • Key Vault を利用して安全に証明書を格納する
  • 数多くの証明書を 1 つの Key Vault を使って集中管理
  • 簡単にデプロイと設定が完了する
  • 信頼性の高い実装
  • モニタリングを容易に (Application Insights, Webhook)

Key Vault を使うことで ACME を使った証明書の安全かつ集中管理が行えます。

お知らせ

Acmebot v3 へのアップグレード

Key Vault Acmebot v3 は 2019 年 12 月 31 日にリリースされました。これより前にデプロイしているユーザーは、以下の手順に従って v3 にアップグレードすることをお勧めします。

shibayan#80

Azure CDN / Front Door への証明書デプロイを自動化

2020 年 8 月の時点で、Azure CDN / Front Door は新しい Key Vault 証明書を自動的にデプロイしません。自動的に新しいバージョンの証明書をデプロイするための補助アプリケーションを公開しています。

https://github.com/shibayan/keyvault-certificate-rotation

目次

対応している機能

  • 全ての Azure App Service (Web Apps / Functions / Containers, OS に依存しない)
  • Azure CDN と Front Door
  • Azure Application Gateway v2
  • SANs (サブジェクト代替名) を持つ証明書の発行 (1 つの証明書で複数ドメインに対応)
  • Zone Apex ドメイン向け証明書とワイルドカード証明書の発行
  • 証明書の自動的な更新
  • ACME と互換性のある証明書発行機関への対応

必要なもの

利用するためには以下のものが必要です。

  • Azure サブスクリプション (このアプリケーションのデプロイに必要)
  • Azure Key Vault (作成済み、もしくは Key Vault はデプロイ時に作成が可能)
  • DNS プロバイダー (公開 DNS ゾーンにあるホスト)
    • Azure DNS
    • Cloudflare
    • Google Cloud DNS
    • GratisDNS
    • TransIP DNS
    • DNS Made Easy
  • E メールアドレス (ACME の利用登録に必要)

開始する

1. Acmebot をデプロイする

2. アプリケーション設定の追加

Function App のアプリケーション設定から以下の項目を更新します。

  • Acmebot:VaultBaseUrl
    • Azure Key Vault の DNS 名 (既に存在する Key Vault を使う場合)
  • Acmebot:Webhook
    • Webhook 送信先の URL (オプション, Slack と Microsoft Teams を推奨)

3. App Service 認証を有効化する

このアプリケーションの一部としてデプロイされている Function App で認証を有効にする必要があります。

Azure Portal にて 認証/承認 メニューを開き、App Service 認証を有効化します。「要求が認証されない場合に実行するアクション」として Azure Active Directory でのログイン を選択します。認証プロバイダーとして Azure Active Directory を利用することを推奨していますが、他のプロバイダーでもサポート外ですが動作します。

Enable App Service Authentication with AAD

認証プロバイダーとして Azure Active Directory を選択し、管理モードとして 簡易 を選択し「OK」を選択します。

Create New Azure AD App

最後にこれまでの設定を保存して、App Service 認証の有効化が完了します。

4. Azure DNS へのアクセス制御 (IAM) を追加する

対象の DNS ゾーンもしくは DNS ゾーンが含まれているリソースグループの アクセス制御 (IAM) を開き、デプロイしたアプリケーションに対して DNS Zone Contributor のロールを割り当てます。

temp

Azure DNS 以外の DNS プロバイダーを利用する際には、以下のページを参考に設定を行ってください。

https://github.com/shibayan/keyvault-acmebot/wiki/DNS-Provider-Configuration

5. Key Vault のアクセスポリシーに追加 (既に存在する Key Vault を使う場合)

Key Vault のアクセスポリシーを開き、デプロイしたアプリケーションに対して Certificate management アクセスポリシーを追加します。

image

使い方

新しく証明書を発行する

ブラウザで https://YOUR-FUNCTIONS.azurewebsites.net/add-certificate へアクセスして、Azure Active Directory で認証すると Web UI が表示されます。その画面から対象のドメインを選択し、必要なサブドメインを追加して実行すると、数十秒後に証明書の発行が完了します。

Add certificate

アクセス制御 (IAM) の設定が正しくない場合には、ドロップダウンリストには何も表示されません。

発行済みの証明書の更新

存在する全ての ACME で発行された証明書は有効期限の 30 日前に自動的に更新されます。

How to use the issued certificate in Azure services

App Service (Web Apps / Functions / Containers)

Azure Portal から TLS/SSL の設定 を開き、「秘密キー証明書 (.pfx)」から「Key Vault 証明書のインポート」ボタンを選択すると、Key Vault 証明書から App Service へインポートが行えます。

image

インポート後は、App Service によって自動的に証明書の更新がチェックされます。

Application Gateway v2

Azure CDN

Azure Front Door

API Management

その他のサービス

発行された証明書を Key Vault からダウンロードすることで、Azure もしくは Azure 以外で利用できます。

謝辞

License

このプロジェクトは Apache License 2.0 の下でライセンスされています。