Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • 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 (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Node.js Behavior in Heroku
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
    • Heroku Inference
      • Inference API
      • Quick Start Guides
      • AI Models
      • Inference Essentials
    • Vector Database
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • セキュリティ
  • アプリのセキュリティ
  • Heroku SSL

Heroku SSL

日本語 — Switch to English

最終更新日 2024年02月08日(木)

Table of Contents

  • 証明書のオプション
  • 証明書の手動アップロード
  • SSL 証明書の詳細の表示
  • 証明書とドメインのマッピングを更新する
  • SSL が正しく設定されていることの確認
  • 証明書の更新
  • 証明書の削除
  • SSL の詳細
  • トラブルシューティング

SSL は、すべての Web リクエストにエンドツーエンド暗号と整合性をもたらす暗号化プロトコルです。機密性の高いデータを転送するアプリでは、すべての情報を安全に転送できるように SSL を有効にします。

Heroku SSL は、すべての Heroku アプリで SSL を有効にする機能の組み合わせです。Heroku SSL では、広くサポートされている TLS プロトコルの拡張機能である Server Name Indication (SNI) を使用します。

証明書のオプション

アプリは提供された*.herokuapp.com​証明書、Automated Certificate Management (ACM)​、または手動アップロードされた証明書​を使用します。

証明書の手動アップロード

certs:add​ Heroku CLI​ コマンドを使用して、証明書と秘密鍵を追加します。証明書と鍵のペアを関連付ける相手であるカスタムドメインを指定するよう求められます。

$ heroku certs:add server.crt server.key
Adding SSL to example... done
exampleapp now served by exemplary-sushi-4gr7rb6h8djkvo9j5zf16mfp.herokudns.com.
Certificate details:
Expires At: 2022-08-18 21:53:18 GMT
Issuer: C=US; ST=CA; L=SF; O=Heroku; CN=www.example.com
Starts At: 2021-08-18 21:53:18 GMT
...

中間証明書が必要な場合は、完全なチェーンを取得するための証明書のマージ​に関するこの記事を参照してください。

証明書が正常に追加されたら、コマンド出力から DNS ターゲットを取得して、アプリケーションでその証明書が提供されていることを確認します。

$ openssl s_client -connect <dns target>:443 -servername <domain>

次に例を示します。

openssl s_client -connect exemplary-sushi-4gr7rb6h8djkvo9j5zf16mfp.herokudns.com:443 -servername www.example.com

確認が成功したら、アプリで各ドメインの DNS 設定を更新します。heroku domains を実行すればいつでも、アプリに関連付けられているカスタムドメインに割り当てられた DNS ターゲットの一覧を表示できます。証明書を追加した後、DNS ターゲットのパターンは <adjective>-<noun>-<random>.herokudns.com​ になります。前の例のターゲットは exemplary-sushi-4gr7rb6h8djkvo9j5zf16mfp.herokudns.com​ です。heroku domains​を実行すればいつでも、アプリに関連付けられているカスタムドメインに割り当てられた DNS ターゲットの一覧を表示できます。

他の場所で必要な場合、アップロードした秘密鍵のコピーは常に安全に保管してください。Heroku では、そのシステムから秘密鍵を抽出することは許可していません。

SSL 証明書の詳細の表示

1 つのアプリで、複数の一意な証明書を受け入れることができます。アプリの証明書の一覧を表示するには、certs​ コマンドを使用します。

$ heroku certs
Name                  Common Name(s)           Expires               Trusted  Type  Domains
────────────────────  ───────────────────────  ────────────────────  ───────  ────  ───────
mamenchisaurus-65072  kapow.herokudev.frsm.us  2022-02-03 19:53 UTC  False    SNI   0
oviraptor-60827       bar.herokudev.frsm.us    2022-02-03 19:40 UTC  False    SNI   1

証明書に関する詳細な情報を取得するには、certs:info​ を使用します。

$ heroku certs:info --name=mamenchisaurus-65072
Fetching SSL mamenchisaurus-65072 info for exampleapp... done
Certificate details:
Expires At: 2012-10-31 21:53:18 GMT
Issuer: C=US; ST=CA; L=SF; O=Heroku; CN=www.example.com
Starts At: 2011-11-01 21:53:18 GMT
Subject: C=US; ST=CA; L=SF; O=Heroku; CN=www.example.com
...

証明書とドメインのマッピングを更新する

heroku certs:info --show-domains​ コマンドは、証明書に関連付けられているドメインを表示します。

証明書をドメインに関連付ける、または、証明書とカスタムドメインのマッピングを更新するには、heroku domains:update​ コマンドを使用します。

$ heroku domains:update www.example.com --cert mycert
Updating www.example.com to use mycert certificate... done

SSL が正しく設定されていることの確認

ドメインが正しく設定されていることをテストするには、curl などのコマンドラインユーティリティを使用します。

$ curl -vI https://www.example.com
* About to connect() to www.example.com port 443 (#0)
*   Trying 50.16.234.21... connected
* Connected to www.example.com (50.16.234.21) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using AES256-SHA
* Server certificate:
*    subject: C=US; ST=CA; L=SF; O=SFDC; OU=Heroku; CN=www.example.com
*    start date: 2011-11-01 17:18:11 GMT
*    expire date: 2012-10-31 17:18:11 GMT
*    common name: www.example.com (matched)
*    issuer: C=US; ST=CA; L=SF; O=SFDC; OU=Heroku; CN=www.heroku.com
*    SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8r zlib/1.2.3
> Host: www.example.com
> Accept: */*
...

出力に注意してください。設定が正しい場合、SSL certificate verify ok​ と出力されます。common name: www.example.com (doesn’t match 'www.somedomain.com')​などが出力された場合は、正しく設定されていないものがあります。

macOS をご使用の方へ: ​curl​ コマンドで -k​ フラグを使用すると、接続エラーが発生する可能性があります。macOS の多くのバージョンでは、curl​ で -k​ を指定しても SNI 情報は渡されません。

証明書の更新

certs:update​ コマンドでは、新規の証明書と、新規または既存の秘密鍵を使用して更新を行います。

$ heroku certs:update --name=mamenchisaurus-65072 server.crt server.key
Updated certificate details:
Common Name(s): www.example.com
Expires At:     2017-03-21 21:35 UTC
Issuer:         /C=US/ST=California/L=San Francisco/O=Heroku/OU=Engineering/CN=www.example.com
Starts At:      2016-03-21 21:35 UTC
Subject:        /C=US/ST=California/L=San Francisco/O=Heroku/OU=Engineering/CN=www.example.com

証明書の削除

certs:remove​ コマンドを使用して証明書を削除します。

$ heroku certs:remove --name=mamenchisaurus-65072
Removing SSL certificate mamenchisaurus-65072 (exemplary-sushi-4gr7rb6h8djkvo9j5zf16mfp.herokudns.com) from example... done

証明書を削除すると、証明書のドメインへの HTTPS トラフィックがすべて中止されます。

SSL の詳細

クライアント IP アドレス

クライアント (多くの場合ブラウザ) では、SSL リクエストを開始すると、アプリに送信する前にリクエストを復号化します。この余分な SSL ターミネーションステップにより、リクエストの元の IP アドレスが不明瞭になります。

回避策として、X-Forwarded-For​ HTTP リクエストヘッダー​には、外部クライアントの IP アドレスが含まれます。

サポートされる SSL プロトコル

  • TLS 1.2
  • TLS 1.3

セキュリティ上の理由により、SSLv3、TLS 1.0、または TLS 1.1 は Heroku でサポートされていません。Heroku では、セキュリティのベストプラクティスと後方互換性のバランスをとるために、暗号スイートを精選しています。

Heroku SSL では、Common Runtime アプリの TLS バージョンまたは暗号のカスタマイズは許可されていません。Private Space アプリの暗号スイートを調整する方法については、「Private Space でのルーティング​」を参照してください。

内部ルーティングを使用するアプリでの Heroku SSL の使用

内部でルーティングされるアプリで Heroku SSL を使用する場合は、カスタムドメインで DNS-01 チャレンジを使用する必要があります。内部でルーティングされるアプリには、外部からアクセスまたは検証できないプライベート IP があるため、他のチャレンジタイプ (HTTP-01、TLS-ALPN-01) は機能しません。

トラブルシューティング

内部サーバーエラー

証明書を追加するときに Internal server error​ が発生した場合は、Heroku CLI​ のバージョンが古くないかどうかを確認してください。CLI がインストールされていることを検証​し、heroku update​ で最新バージョンに更新するか、再インストールしてください。

SSL ファイルの種類

SSL 証明書の作成では、何種類かのファイルが生成および使用されます。

  • .csr​ ファイルは証明書署名要求​です。このファイルによって、証明書プロバイダーに対する証明書要求を開始します。このファイルには、要求元の組織に関する管理情報が含まれます。
  • .key​ ファイルは、サイトの SSL 対応リクエストに使用される秘密鍵です。
  • .pem​ および .crt​ 拡張子はどちらも base64 ASCII エンコードファイルです。多くの場合、互いに交換可能なものとして使用されますが、技術的な違いとしては、.pem​ ファイルには証明書および​キーが含まれます。.crt​ファイルには証明書のみが含まれます。実際は、この相違は多くの場合無視されます。

関連カテゴリー

  • アプリのセキュリティ
自己署名の SSL 証明書を作成する Heroku での TLS の概要

Information & Support

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

Language Reference

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

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices