1つのHerokuアプリケーションに多くのSSL証明書を含めることは可能ですか?
異なるタイプの複数のドメイン名があり、TLDがアプリケーションを指しているため、各ドメイン名を保護する必要があります。できれば、別のセキュアURLにリダイレクトしないでください。
同じアプリにトラフィックをルーティングする複数のSSLエンドポイントを設定する方法があります。
SSLエンドポイントは、SSL接続を終了し、暗号化されていないトラフィックを通常のHerokuルーティングレイヤーに送り返すことで機能します。
これを利用するには、新しいSSLエンドポイントを使用して新しいアプリを作成し、SSL接続を終了して既存のアプリにトラフィックをルーティングします。
アプリにドメイン名を追加します。
$ heroku domains:add ssl.example.com
新しいアプリを作成します。
$ heroku create endpoint-for-example-com
SSLエンドポイントアドオンを追加($ 20 /月):
$ heroku addons:create ssl:endpoint --app endpoint-for-example-com
証明書を新しいアプリに追加します。
$ 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
新しいアプリに割り当てられたsslエンドポイントを使用します(例:kagawa-1482.herokussl.example.com
)保護するドメイン名のCNAMEホストとして。これは通常、ドメインのDNS構成で行われます。
新しいアプリはdynoを必要としませんが、SSLエンドポイントアドオンには月額$ 20の料金がかかります。
ノート:
最近herokuは、有料のダイノ、趣味などの自動LetsEncrypt TLS証明書を追加しました。これは、任意の数のドメインおよびサブドメインにわたって自動的に機能します。この方法は、ワイルドカードサブドメインが必要ない場合にのみ機能します。
さらに、 certbot を使用して、LE認定を複数のドメインおよびサブドメインにわたって自分で管理できます。
certbot certonly --standalone -d example.com -d www.example.com -d test.net
カスタム証明書のアップロードについては、この heroku doc を参照してください。
OPの質問とまったく同じではありませんが、HerokuでSAN(Subject Alternative Name)証明書)を使用して年間約25ドルでこれを達成できました。
OSXで複数のサブジェクト代替名(subjectAltName
)を使用してCSRを生成しました。
/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
次に、CSRを生成するときにこの新しい.cnfを使用しました。
openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -config openssl.cnf
SSLs.comから証明書を購入しました。彼らのComodo "PositiveSSL Multi-Domain"は、この記事の執筆時点で年間25.99ドルであり、3〜100のドメインからサポートされています(3を超えるドメインは12ドル程度です)。
送信されたCAバンドルと.crtを1つの.crtに(この順序で)連結し、Herokuに追加しました。 3つのドメインすべてがアプリに追加され、同じCNAMEをポイントし、すべて期待どおりにhttps://で解決されました。
これが興味のある人にとって実行可能なルートである場合、追加のエンドポイントで年間240ドルよりはるかに安い。
関連リンク: