web-dev-qa-db-ja.com

1つのHerokuアプリケーションでの複数のSSL証明書

1つのHerokuアプリケーションに多くのSSL証明書を含めることは可能ですか?

異なるタイプの複数のドメイン名があり、TLDがアプリケーションを指しているため、各ドメイン名を保護する必要があります。できれば、別のセキュアURLにリダイレクトしないでください。

40
Dallas Clark

同じアプリにトラフィックをルーティングする複数のSSLエンドポイントを設定する方法があります。

SSLエンドポイントは、SSL接続を終了し、暗号化されていないトラフィックを通常のHerokuルーティングレイヤーに送り返すことで機能します。

これを利用するには、新しいSSLエンドポイントを使用して新しいアプリを作成し、SSL接続を終了して既存のアプリにトラフィックをルーティングします。

  1. アプリにドメイン名を追加します。

    $ heroku domains:add ssl.example.com

  2. 新しいアプリを作成します。

    $ heroku create endpoint-for-example-com

  3. SSLエンドポイントアドオンを追加($ 20 /月):

    $ heroku addons:create ssl:endpoint --app endpoint-for-example-com

  4. 証明書を新しいアプリに追加します。

     $ heroku certs:add server.crt bundle.pem server.key --app endpoint-for-example-com --type endpoint
     Resolving trust chain... done
     Adding SSL Endpoint to endpoint-for-example-com... done
     endpoint-for-example-com now served by kagawa-1482.herokussl.example.com
    
  5. 新しいアプリに割り当てられたsslエンドポイントを使用します(例:kagawa-1482.herokussl.example.com)保護するドメイン名のCNAMEホストとして。これは通常、ドメインのDNS構成で行われます。

新しいアプリはdynoを必要としませんが、SSLエンドポイントアドオンには月額$ 20の料金がかかります。

ノート:

  • この解決策はHerokuによって文書化されていないため、将来的にこの動作を削除または変更する可能性があります。 Herokuは、これが本番環境で使用しても安全であることを確認しています。
  • エンドポイントは、必ずプライマリアプリと同じリージョンに作成してください。
  • DNSの変更が有効になるまで、しばらく時間がかかる場合があります。
92
Sam Oliver

最近herokuは、有料のダイノ、趣味などの自動LetsEncrypt TLS証明書を追加しました。これは、任意の数のドメインおよびサブドメインにわたって自動的に機能します。この方法は、ワイルドカードサブドメインが必要ない場合にのみ機能します。

heroku

さらに、 certbot を使用して、LE認定を複数のドメインおよびサブドメインにわたって自分で管理できます。

certbot certonly --standalone -d example.com -d www.example.com -d test.net

カスタム証明書のアップロードについては、この heroku doc を参照してください。

6
denixtry

OPの質問とまったく同じではありませんが、HerokuでSAN(Subject Alternative Name)証明書)を使用して年間約25ドルでこれを達成できました。

OSXで複数のサブジェクト代替名(subjectAltName)を使用してCSRを生成しました。

  1. /System/Library/OpenSSL/openssl.cnfを現在のディレクトリにコピーし、関連セクション([req]および[v3_req])を修正します。

    [req]
    req_extensions = v3_req
    
    [v3_req]
    subjectAltName=DNS:www.example1.com,DNS:www.example2.com,DNS:www.example3.com
    
  2. 次に、CSRを生成するときにこの新しい.cnfを使用しました。

    openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -config openssl.cnf
    
  3. SSLs.comから証明書を購入しました。彼らのComodo "PositiveSSL Multi-Domain"は、この記事の執筆時点で年間25.99ドルであり、3〜100のドメインからサポートされています(3を超えるドメインは12ドル程度です)。

  4. 送信されたCAバンドルと.crtを1つの.crtに(この順序で)連結し、Herokuに追加しました。 3つのドメインすべてがアプリに追加され、同じCNAMEをポイントし、すべて期待どおりにhttps://で解決されました。

これが興味のある人にとって実行可能なルートである場合、追加のエンドポイントで年間240ドルよりはるかに安い。

関連リンク:

4