Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • コマンドライン
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリー
    • 継続的統合
  • 言語サポート
    • Node.js
    • Ruby
      • Bundler の使用
      • Rails のサポート
    • Python
      • Python でのバックグランドジョブ
      • Django の使用
    • Java
      • Maven の使用
      • Java でのデータベース操作
      • Spring Boot の使用
      • Java の高度なトピック
    • PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres Getting Started
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
    • Heroku Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
    • コンプライアンス
  • Heroku Enterprise
    • Private Space
      • インフラストラクチャネットワーキング
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
    • シングルサインオン (SSO)
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Integrating with Salesforce
  • セキュリティ
  • アプリのセキュリティ
  • Automated Certificate Management

Automated Certificate Management

日本語 — Switch to English

最終更新日 2022年11月17日(木)

Table of Contents

  • セットアップ
  • 独自の TLS 証明書の提供
  • 既存のアプリケーションの移行
  • トラブルシューティング
  • ACM の代替手段
  • 既知の制限

Heroku の Automated Certificate Management (ACM) 機能により、Common Runtime で Basic および Professional の dyno を実行しているアプリと、この機能を有効にしている Private Space 内のアプリの TLS 証明書が自動的に管理されます。

ACM によって処理される証明書は、有効期限が切れる 1 か月前に自動的に更新されます。また、カスタムドメインを追加または削除するたびに、新しい証明書が自動的に作成されます。eco​ dyno を使用するアプリを除いたすべてのアプリケーションには、ACM が無料で含まれています。

Automated Certificate Management では、自動化された無料かつオープンの認証局である Let’s Encrypt​ を使用して、アプリケーションの TLS 証明書を管理します。Let’s Encrypt は、Internet Security Research Group (ISRG)​ によって公益目的で運営されています。

セットアップ

Common Runtime

2017 年 3 月 21 日以降に作成され、Basic または Professional dyno で実行されるすべての Common Runtime アプリでは、ACM がデフォルトで有効です。以下の手順は、現在 eco​ dyno で実行しているアプリと、この日付よりも前に作成されたアプリが対象です。

アプリを現在 eco​ dyno で実行している場合、Basic または Professional dyno を使用するようにアプリをアップグレードすると、Heroku によって自動的に ACM が有効化されます。

$ heroku ps:resize web=basic

すでに Basic または Professional dyno でアプリを実行している場合は、次のコマンドで ACM を有効にします。

$ heroku certs:auto:enable

ACM を有効にするときは、DNS がその新しい DNS ターゲットを指していることを確認してください。*.herokuapp.com​ または *.herokussl.com​ を指している場合、Heroku で証明書を検証できません。DNS ターゲットを検証するには、heroku domains​ を実行します。

Private Space

アプリに現在 TLS 証明書がない場合は、ACM を有効にして、証明書がプロビジョニングされるのを待つだけです。

$ heroku certs:auto:enable

すでに手動で TLS 証明書をアップロードしている場合、ACM に移行するには、次の手順に従います。

1. 手動でアップロードした証明書の名前を確認する

$ heroku certs
Name          Endpoint                                                 Common Name(s)          Expires               Trusted  Type
────────────  ───────────────────────────────────────────────────────  ──────────────────────  ────────────────────  ───────  ─────────────────
nagano-91606  <haiku>.<haiku>.herokuspace.com                          <common-name>           2018-08-13 11:05 UTC  True     SNI

2. アプリで ACM を有効にする

$ heroku certs:auto:enable

Enabling Automatic Certificate Management... done
=== Your certificate will now be managed by Heroku.  Check the status by running heroku certs:auto.

3. ACM 証明書が発行されるのを待つ

必ず、この処理が完了するまで待ってから次に進んでください。これを守らないと、アプリでダウンタイムが発生する可能性があります。

$ watch heroku certs:auto

4. 手動で追加した証明書を削除する

手順 1 で確認した証明書の名前を指定します。

$ heroku certs:remove --name nagano-91606

証明書のステータスを表示する

アプリのカスタムドメインの TLS 証明書が生成されるまで、通常 45 ~ 60 分かかります。次のコマンドを実行すると、生成された証明書のステータスを表示できます。

$ heroku certs:auto

証明書のステータスが Cert Issued​ になったら、プロセスは完了です。

証明書のステータスが DNS Verified​ の場合、プロセスはまだ完了していません。Heroku はドメインのステータスを検証しましたが、まだ証明書を Let’s Encrypt に送信する処理の途中です。

次に示すのは、可能性がある証明書生成ステータスの一覧です。

​ステータス ​説明
​Cert Issued ​ドメインに対して証明書が発行されました。
​In Progress ​Heroku はカスタムドメインの DNS を検証しています。
​DNS Verified ​Heroku はカスタムドメインの DNS の検証を終え、証明書の生成処理中です。
​Waiting ​Heroku は現在、証明書の処理を待っています。
​Failing ​Heroku は DNS を検証できません。最大で 1 時間検証を続けます。このエラーへの対処方法については「​トラブルシューティング​」を参照してください。
​Failed ​Heroku は DNS を検証できません。このドメインの検証を中止しました。このエラーへの対処方法については「​トラブルシューティング​」を参照してください。

独自の TLS 証明書の提供

別の CA の証明書、ワイルドカード証明書、EV 証明書など、異なる種類の TLS 証明書を使用することも容易です。

「Heroku SSL​」で説明している手順に従って、独自の証明書をアップロードするだけです。

独自の証明書を提供すると、アプリケーションで ACM が無効になります。ACM を再び有効にする場合は、次のコマンドを実行できます。

$ heroku certs:auto:enable

Automated Certificate Management をオフにする

ACM をオフにしてすぐにオンに戻すことはしないでください。Let’s Encrypt でアカウントが速度制限に達する可能性があるためです。

次のコマンドを実行すると ACM をオフにできます。

$ heroku certs:auto:disable

ドメインの証明書が削除され、アプリケーションで ACM がオフになりま す。heroku certs:remove​ で証明書を削除すると、ACM もオフになります。

既存のアプリケーションの移行

独自の証明書を使用して Heroku SSL および Private Space から移行する

Automated Certificate Management では、Heroku SSL (SNI) サポートと同じ DNS 設定を使用します。Private Space アプリで ACM を有効化する場合でも、DNS の変更は必要ありません。DNS 設定の検証には少し時間がかかる場合がありますが、検証の進行中、アプリでは既存の SSL 証明書が引き続き提供されます。 プロセスの最初から最後まで、アプリはカスタムドメインで利用可能な状態です。

トラブルシューティング

ACM プロセスを修正または高速化する目的で ACM をオフにしないでください。Let’s Encrypt でアカウントが速度制限に達する可能性があるためです。

検証エラー

heroku certs:auto​ を実行したときに、いずれかのドメインで heroku certs:auto​ が Failing​ または Failed​ を示している場合、Heroku はそのドメインで DNS を検証できませんでした。heroku domains​ で指定されている正しい DNS ターゲットを DNS が指していることを確認する必要があります。DNS ターゲットは <your-domain>.herokudns.com​ の形式になります。

*.herokuapp.com​ や *.herokussl.com​ などの古い DNS 設定を DNS が指している場合、Heroku は証明書を生成できません。

ACM がドメインに対して証明書を作成できない場合、3 日間の試行後に通知が届きます。このエラーが発生するのは、ほとんどの場合、ドメインに対して DNS が適切に設定されていないからです。 DNS の問題を解決したら、次のコマンドを実行して ACM に再試行を指示します。

$ heroku certs:auto:refresh

失敗の理由

証明書の発行が失敗する理由はいくつかあります。 通知メールまたは CLI で失敗の理由を確認できる場合があります。

64 文字の制限を超える CN

ドメイン名は 64 文字を超えてはなりません。

正しくない DNS 設定

DNS レコードが正しく設定されていません。

このドキュメント​の内容を再確認し、DNS レコードが正しく設定されていることを確認してください。

ドメインが DNSSEC (DNS Security Extensions) 検証に失敗した場合、このエラーが発生することがあります。

Private Space アプリで web​ dyno が実行されていない場合にも、このエラーが発生することがあります。

ドメインの DNS を解決できない

このエラーは通常、DNS 名がまだ DNS プロバイダーまで伝播していない場合に発生します。 Heroku の ACM 機能では、ドメインの可用性を Google の DNS (8.8.8.8​) でチェックします。

ドメインが Google の DNS で利用可能で、入力ミスがないことを確認してください。

CDN が HTTP チャレンジを返さない

HTTP チャレンジ ファイルが返されることを Heroku ACM で検証中に 404 エラーが発生しています。 これが発生するのは通常、ドメインが Heroku によって提供される DNS ターゲットではなく CDN を指しており、HTTP チャレンジファイルが CDN に存在しない場合です。

これは通常、AWS CloudFront で発生します。

DNS リダイレクトでパスが転送されない

HTTP チャレンジファイルが返されることを Heroku ACM で検証していますが、DNS プロバイダーからファイルの場所の完全なパスが返されません。

使用中の DNS プロバイダーがパスの転送をサポートしていない場合、DNS プロバイダーの変更が必要な可能性があります。 Google Domains​ などの一部のプロバイダーでは、パス転送をオンまたはオフにする機能を提供しています。Google Domains では、デフォルトでこれが “オフ” になっています。

正しくない CNAME ターゲット

このエラーが発生するのは、DNS レコードで、提供された DNS ターゲットではなく CNAME のターゲットとして app-name.herokuapp.com​ を指定した場合です。正しい DNS ターゲットを指すように DNS レコードを更新してください。

正しい DNS ターゲットを確認するには、heroku domains​ を実行します。

速度制限

7 日間の期間中、このアプリのドメインに対する証明書発行リクエストが多すぎたため、ACM が失敗しました。 この速度制限は Let’s Encrypt 側で設定されているため、Heroku サポートでは対処できません。​アプリで ACM の有効化と無効化を繰り返すと、速度制限が発動する場合があります。

他のアプリのドメインの ACM はこのエラーの影響を受けない (アプリで速度制限が発生しても、使用ドメインが異なる別のアプリの ACM には影響しない) ことに注意してください。

速度制限が終わるタイミングは、次を実行して確認できます。

$ heroku certs:auto

速度制限期間が終了したら、次のように実行して証明書の再発行を試すことができます。

$ heroku certs:auto:refresh

DNS プロバイダーがタイムアウトした

Heroku で DNS レコードの検証を試みましたが、DNS プロバイダーがタイムアウトしました。 heroku certs:auto:refresh​ を実行して再試行してください。

CDN の Strict TLS はサポートされていない

Cloudflare で ACM の使用を試みていますが、正しく設定されていません。

Cloudflare により SSL 証明書が提供されるため、Heroku では Cloudflare で ACM を使用しないことをお勧めします。アプリで ACM を無効にするには、heroku certs:auto:disable​ を実行します。

詳細は、Cloudflare と Heroku の HTTPS 設定に関する Cloudflare のドキュメント​を参照してください。

DNS プロバイダーで CAA がサポートされていない

DNS プロバイダーで Certificate Authority Authorization (CAA) レコードがサポートされていないというエラーが Let’s Encrypt から返されました。

CAA サポートについての詳細は、DNS プロバイダーにお問い合わせください。 CAA レコード​の詳細も参照してください。

発行を妨げる CAA レコード

CAA レコードの内容が原因で、Let’s Encrypt で証明書を発行できません。

ドメインの証明書の発行を Let’s Encrypt に許可する CAA レコードを追加してください。CAA レコード​の詳細も参照してください。

ドメインレコードが存在しない

Let’s Encrypt が NXDOMAIN エラーを返しました。これは、ドメインレコードが DNS プロバイダーに存在しないことを意味します。

このエラーを修正するには、ドメイン名が正しく入力されており、ドメインの DNS レコードに正しい CNAME が含まれていることを確認してください。

安全でないとみなされたドメイン

Let’s Encrypt は Google の Safe Browsing API に照らしてドメインをチェックし、安全でないとみなしたドメインの証明書は発行しません。

次の URL にアクセスしてドメインのステータスを確認してください: http://www.google.com/safebrowsing/diagnostic?site=http://yourdomainhere.com/

Let’s Encrypt のドメインブロックリスト

Let’s Encrypt のドメインブロックリストに登録されているドメインに対して証明書をリクエストしました。通常、不正な証明書の作成を防ぐための追加セキュリティ手段として、よく知られたドメインがこのブロックリストに含まれています。

コミュニティサポートフォーラム​から Let’s Encrypt にお問い合わせください。

ACM の代替手段

ワイルドカード証明書の自動更新や別の CA の利用を希望する場合、SSL FastTrack​ や ExpeditedSSL​ などの Heroku アドオンがユースケースに適合する可能性があります。

Let’s Encrypt​ は Heroku および Salesforce から独立した組織であり、Heroku では、ドメインの SSL を取得するケースの大半で Let’s Encrypt の検証プロセスの統合と証明書のインストールを簡素化する ACM を提供しています。アプリまたはドメインでより高度な統合が必要な場合は、Let’s Encrypt を直接使用できます。また、取得した証明書を Heroku アプリに自動的にインストールするものなど、自社製およびサードパーティのさまざまな既製プラグインを使用して Let’s Encrypt を高度に自動化できます。その他の機能については、Let’s Encrypt サイトの資料を参照してください。

既知の制限

  • カスタムドメインは 64 文字を超えてはなりません。
  • ACM は証明書の手動管理を置き換えるものであり、1 つのアプリで両方を行うことはできません。
  • ワイルドカードのカスタムドメインを持つアプリケーションは、ACM でサポートされていません。
  • Private Space 内のアプリで信頼済み IP​ を使用してアクセスをブロックしていた場合、ACM はそのアプリで機能しません。
  • 初期検証と更新が機能するためには、Private Space アプリで少なくとも 1 つの web​ dyno が実行中である必要があります。
  • ACM が有効なとき、Let’s Encrypt の HTTP チャレンジ URL (/.well-known/acme-challenge/*​) は Heroku Platform によって処理され、アプリからリダイレクトされます。アプリでこれらのパスを使用する必要がある場合、ACM を無効にする必要があります。
  • ACM では IPv6 AAAA DNS レコードはサポートされていません。
  • ACM は内部ルーティング​と互換性がありません。

関連カテゴリー

  • アプリのセキュリティ
自己署名の SSL 証明書を作成する Cookie および Public Suffix List

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Podcasts
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies
  • Cookie Preferences