web-dev-qa-db-ja.com

Heroku自動証明書管理が1つのドメインで失敗する

Herokuを使用してアプリのSSL証明書を取得しようとしていますが、両方のドメイン名のいずれかで 自動証明書管理 が失敗しています。

2017年3月の前にdynoを作成したため、説明されているようにheroku certs:auto:enableを実行する必要がありました here

次に、heroku domainsは次を返します:

Domain Name         DNS Record Type  DNS Target
───────────────     ───────────────  ─────────────────────────────
example.com         ALIAS or ANAME   example.com.herokudns.com
www.example.com     CNAME            www.example.com.herokudns.com

これは herokuが期待するもの と一致しているようです。

とにかく、heroku certs:autoは次を返します:

Domain             Status
───────────────    ────────────
example.com        Failing
www.example.com    OK          

ドメインやDNSなどに関する設定については、読み書きができません。したがって、これは私の側からの非常に単純な間違いかもしれません。ただし、私は He​​rokuトラブルシューティングドキュメント およびSO this one または this one などの質問を読み、まだ何が悪いのかわかりません。

www.example.comは問題ないがexample.comが失敗するという事実は、私をさらに混乱させます。残念ながら、 失敗の理由 のない通知メールを受け取りました。

Namecheap

問題はHerokuまたはドメインを購入した場所のどちらかにあると思います。それがNamecheap.comです。

そこのDomainタブで、

NAMESERVERS Namecheap BasicDNS

REDIRECT DOMAIN   Source URL     Destination
                  example.com    http://www.example.com

そしてAdvanced DNSタブで:

Type                  Host    Value                               TTL
-------------         -----   -------------------------------     -------
CNAME Record          www     example.com.herokudns.com           Automatic
TXT Record            @       google-site-verification...         Automatic
URL Redirect Record   @       http://www.example.com/ Unmasked

何が悪いのですか?


更新

問題はNamecheapが原因であるようです。 Herokuで 次のチケット を見つけました:

問題

ユーザーは、適切なDNSレコードを設定するか、HTTPS経由でアクセスすることにより、ルートドメイン(別名apexドメイン/ネイキッドドメイン)をHerokuアプリにポイントする際に問題を抱えています。

解決

Herokuのルートドメインでは、「CNAMEのような」レコードを使用する必要があり、ALIASまたはANAMEレコードと呼ばれることがよくあります。

残念ながら、GoDaddy、Namecheap、Bluehostなどの一般的なDNSホストの多くは、これらのタイプのレコードをサポートしていません。代わりに、彼らは以下を提供する傾向があります:

  • Aレコード

  • URLリダイレクト/転送

これらのオプションの両方に注意事項があります...

驚いたことに、すべての手順が明確に説明されている場所は見つかりませんでした。これまでに行ったことは次のとおりです。

  1. これをサポートするDNSホストでアカウントを開きます。 DNSimpleを使用しました。執筆の時点では、価格は5€/月から始まりますが、無料の試用月があります。
  2. ドメインの転送には14ユーロ/年かかるため、 NamecheapのネームサーバーをDNSimpleにポイント し、ドメインをDNSimpleに追加してDNSレコードを作成しました。
  3. 次に、DNSimpleの構成が行われました。私はドキュメントのステップ1に従って HTTPをHTTPにリダイレクト しました。 HerokuのACMがすでに実行しているため、ステップ2を無視しました。そして、ステップ3では、記事 ドメインのApexをHerokuにポイントする が非常に役に立ちました。次のように、ALIAS recordを手動で追加し、CNAMEレコードも追加しました。

    Type        Name                   Content
    ─────       ───────────────        ───────────────────────
    ALIAS       example.commyapp.com.herokudns.com
    CNAME       www.example.commyapp.com.herokudns.com
    

最初は何も機能していなかったため、ブラウザに次のエラーが表示されました。

このサイトにアクセスできません

www.example.comのサーバーIPアドレスが見つかりませんでした。

トラブルシューティングのドキュメント を確認しましたName server propagation delayが唯一の可能性であることがわかったので、待ちました。とても長い時間のように感じましたが、サイトが再びオンラインになるまで実際には1時間もかかりませんでした。

ただし、SSL証明書が48時間以上経過しても失敗し続ける...

14
J0ANMM

今後の参考のために:Herokuサポートに連絡した後、手動で私の証明書リクエストを更新し、最終的に私のアプリに対して発行されました...

4
J0ANMM

それが無料なので、ここで特にCloudFlareソリューションの答えを確認してください

自動化された証明書管理は、httpsから無料のSSL証明書をどこでもプロビジョニングします。証明書を購入する必要はありません。

ただし、namecheapは「apex」ドメインの「エイリアス」レコードを許可しないため、ACMでは機能しません。サブドメインがないドメイン https://example.com ではない https://www.example.com

オプションは、dnsimpleなどの「エイリアス」レコードをサポートするdnsレジストラに切り替えることです。彼らは、ドメイン登録料に加えて月額5ドルを請求します。

または、SSLに付属する無料のcloudflareインスタンスを使用することもできます。

すでに証明書を購入している場合は、SSLアドオンを介してHerokuにアップロードする方法があります。

一部のアプリではDNSimple/Heroku ACMを使用し、他のアプリではcloudflareを使用しています。どちらも同じように素晴らしいですが、cloudflareは無料でCDNも提供します。

https://www.reddit.com/r/Heroku/comments/7wh5r4/setting_up_ssl_with_heroku_namecheap/

1
Mohamed Saleh