SSL/TLS 証明書の手動による取得
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2024年04月24日(水)
デフォルトで、Heroku は、すべてのアプリケーションに、無料の Automated Certificate Management (ACM) を提供しています。アプリケーションにワイルドカード証明書や別の認証局を使用する場合は、次のステップを使用して、手動で証明書を取得します。
SSL 証明書の購入は、ベンダーによって費用やプロセスが異なります。ExpeditedSSL と SSL FastTrack は、証明書購入の簡略な方法を提供し、推奨のソリューションになります。他の SSL プロバイダーを使用するには、次のステップの一部または全部を行う必要があります。
プライベートキーの生成
SSL 証明書を要求する前に、openssl
ツールを使用してローカル環境でプライベートキーを生成します。ターミナルから openssl
コマンドを実行できない場合、インストールする必要がある可能性があります。
所有している OS | インストールに使用するコード |
---|---|
Mac OS X | Homebrew: brew install openssl |
Windows | Windows はパッケージ .exe インストーラを完了します |
Ubuntu Linux | apt-get install openssl |
openssl
を使用して新しいプライベートキーを生成します。
求められた場合、簡単なパスワード値を入力します。これは CSR の生成時にのみ使用され、ランタイム時にアプリで使用されません。
Heroku は証明書に RSA キーのみをサポートします。楕円曲線キーはサポートしていません。
$ openssl genrsa -des3 -out server.pass.key 2048
...
Enter pass phrase for server.pass.key:
Verifying - Enter pass phrase for server.pass.key:
プライベートキーからパスワードを取り除く必要があるので、パスワードを手動で入力せずにプライベートキーを読み込むことができます。
$ openssl rsa -in server.pass.key -out server.key
これで、現在の作業用ディレクトリに server.key
プライベートキーファイルが用意されます。
CSR の生成
CSR は、証明書署名要求のことであり、SSL 証明書の購入時にも必要になります。前のステップのプライベートキーを使用して CSR を生成します。これには、組織およびドメインに関する識別情報を入力する必要があります。
ほとんどのフィールドは一目瞭然ですが、次の点には特に注意してください。
フィールド | 説明 |
---|---|
国名 | 組織の拠点がある国の ISO 3166-1 形式の 2 文字コード。 |
共通名 | これは、保護する必要のある完全修飾ドメイン名です。
|
Common Name
フィールドは、安全なドメインに一致する必要があります。ルートドメイン (たとえば、example.com
) の証明書は購入できず、www.example.com
を保護することは期待できません。その逆もあります。
CSR を生成します。
$ openssl req -nodes -new -key server.key -out server.csr
...
Country Name (2 letter code) [AU]:US
Common Name (eg, YOUR name) []:www.example.com
...
この操作の結果は、(前のステップからの server.key
プライベートキーファイルと並んで) ローカルディレクトリ内に server.csr
ファイルが生成されます。
SSL プロバイダーへの CSR の送信
次に、新しい SSL 証明書を作成するプロセスを、選択した証明書プロバイダーで開始します。これは、プロバイダーに応じて異なりますが、前のステップで生成された CSR をある時点でアップロードする必要があります。
どの Web サーバーで証明書を作成するかについても尋ねられることがあります。その場合は、Heroku で使用する Web サーバーとして Nginx を選択します。Nginx がオプションでない場合、Apache 2.x も対応します。
PKCS や X.509 など、使用する証明書形式のオプションが与えられている場合は、X.509 を選択します。
複数のサブドメインを保護する場合は、プロバイダーからワイルドカード証明書を購入する必要があります。これらの証明書は通常さらにコストがかかりますが、*.example.com
のすべてのサブドメインのリクエストに SSL で対応できるようになります。
SSL 証明書の購入プロセスが完了すると、次のような複数のファイルが用意されます。
- 証明書プロバイダーからダウンロードされた、CSR に指定されているドメインの SSL 証明書。このファイルには
.pem
または.crt
の拡張子が付けられます。 - 最初のステップで生成したプライベートキー (
server.key
)。