サーバーで HTTPS を有効にする

Chris Palmer
Chris Palmer

このページでは、 手順は次のとおりです。

  • 2,048 ビット RSA 公開鍵/秘密鍵のペアを作成する。
  • 公開鍵を埋め込んだ証明書署名リクエスト(CSR)を生成する。
  • CSR を認証局(CA)と共有して最終的な証明書を取得する 定義できます。
  • 次のようなウェブアクセスのできない場所に最終的な証明書をインストールする /etc/ssl(Linux と Unix)、または IIS が必要とする場所(Windows)。

鍵と証明書署名リクエストを生成する

このセクションでは、openssl コマンドライン プログラムを使用します。 Linux、BSD、Mac OS X のシステム。秘密鍵、公開鍵、CSR を生成します。

公開鍵/秘密鍵のペアを生成する

まず、2,048 ビットの RSA 鍵ペアを生成します。短いキーは、 ブルート フォース 推測攻撃や、長い鍵は不要なリソースを使用します。

RSA 鍵ペアを生成するには、次のコマンドを使用します。

openssl genrsa -out www.example.com.key 2048

これにより、次の出力が得られます。

Generating RSA private key, 2048 bit long modulus
.+++
.......................................................................................+++
e is 65537 (0x10001)

証明書署名リクエストを生成する

このステップでは、公開鍵と組織に関する情報を埋め込みます。 証明書署名リクエスト(CSR)に変換できます。openssl コマンドを要求して必要なメタデータを取得します。

次のコマンドを実行します。

openssl req -new -sha256 -key www.example.com.key -out www.example.com.csr

以下を出力します。

You are about to be asked to enter information that will be incorporated
into your certificate request

What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CA
State or Province Name (full name) [Some-State]:California
Locality Name (for example, city) []:Mountain View
Organization Name (for example, company) [Internet Widgits Pty Ltd]:Example, Inc.
Organizational Unit Name (for example, section) []:Webmaster Help Center Example
Team
Common Name (e.g. server FQDN or YOUR name) []:www.example.com
Email Address []:webmaster@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

CSR の有効性を確認するには、次のコマンドを実行します。

openssl req -text -in www.example.com.csr -noout

レスポンスは次のようになります。

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=CA, ST=California, L=Mountain View, O=Google, Inc.,
OU=Webmaster Help Center Example Team,
CN=www.example.com/emailAddress=webmaster@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ad:fc:58:e0:da:f2:0b:73:51:93:29:a5:d3:9e:
                    f8:f1:14:13:64:cc:e0:bc:be:26:5d:04:e1:58:dc:
                    ...
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha256WithRSAEncryption
         5f:05:f3:71:d5:f7:b7:b6:dc:17:cc:88:03:b8:87:29:f6:87:
         2f:7f:00:49:08:0a:20:41:0b:70:03:04:7d:94:af:69:3d:f4:
         ...

CSR を認証局に送信する

CSR は認証局(CA)ごとに送信する必要があります いくつかあります。たとえば、ウェブサイトでのフォームの使用や、 CSR にメールで通知されます。CA やその販売パートナーが一部またはすべてを自動化することもあります (場合によっては、鍵ペアや CSR の生成を含む)必要があります。

CSR を CA に送信し、その指示に従って、最終版を受け取ります。 定義できます。

CA によって、クーポンのサービスへの請求金額が異なる されます。

次のように、キーを複数の DNS 名にマッピングするオプションもあります。 (example.com、www.example.com、example.net、 (www.example.net など)または「ワイルドカード」*.example.com など。

ウェブアクセスが不可能な場所にあるすべてのフロントエンド サーバーに証明書をコピーする /etc/ssl(Linux や Unix)などの場所、または IIS(Windows)が必要とする場所 できます。

サーバーで HTTPS を有効にする

サーバーで HTTPS を有効にすることは、 最適化します

  • Mozilla のサーバー設定ツールを使用して、サーバーで HTTPS を設定する サポート。
  • Qualys でサイトを定期的にテストするSSL サーバーのテストと確認 少なくとも A または A+を獲得します

この時点で、運用に関する重要な決定を行う必要があります。次のいずれかを選択します。 次のとおりです。

  • ウェブサーバーがコンテンツを提供する各ホスト名に、個別の IP アドレスを割り当てる 選択します。
  • 名前ベースの仮想ホストを使用する。

ホスト名ごとに異なる IP アドレスを使用している場合は、 HTTP と HTTPS の両方に対応しています。ただし、ほとんどのサイト運用者は名前ベースの 使用すると、IP アドレスを節約できます。また、 あります。

サーバーでまだ HTTPS サービスを利用できない場合は、ここで有効にします (HTTP は HTTPS にリダイレクトされません)。HTTP から HTTPS へのリダイレクトをご覧ください。 をご覧ください)。構成した証明書を使用するようにウェブサーバーを構成します。 購入してインストールした[Mozilla の設定 生成ツール 便利です。

ホスト名やサブドメインが多数ある場合は、それぞれ正しく あります。

現在および、サイトの全期間を通じて定期的に、 Qualys のSSL サーバーテストをご覧ください。 サイトのスコアが A か A+ である必要があります。低評価の原因となるものはすべて アルゴリズムやプロトコルに対する新たな攻撃が発生するため、 常に開発されています

イントラサイト URL を相対 URL にする

HTTP と HTTPS の両方でサイトを配信することができるようになったら、 プロトコルに関係なく可能な限りスムーズに処理されます重要なのは イントラサイトリンクの相対 URL

イントラサイト URL と外部 URL が特定のプロトコルに依存しないようにします。 相対パスを使用するか、//example.com/something.js のようにプロトコルを省略します。

HTTP リソースを含むページを HTTPS で提供する 問題を引き起こす可能性があります。ブラウザで 安全でないリソースを使用して他の方法で保護されていないページにアクセスすると、そのページが 完全には安全ではなく、一部のブラウザは HTTP リクエストの読み込みや実行を拒否します。 ページが破損します。ただし、HTTPS を HTTP(S) バックエンドとして HTTP ページで参照できます。これらの問題の解決方法については、 混合コンテンツの修正をご覧ください。

サイト上の他のページへの HTTP ベースのリンクをたどって、 HTTPS から HTTP に変更できます。この問題を解決するには、イントラサイト URL を プロトコル相対パスにするか( (//example.com で始まる)プロトコル、またはホスト相対( (例: /jquery.js)。

すべきこと
<h1>Welcome To Example.com</h1>
<script src="/jquery.js"></script>
<link rel="stylesheet" href="/assets/style.css"/>
<img src="/images/logo.png"/>;
<p>A <a href="/2014/12/24">new post on cats!</a></p>
<ph type="x-smartling-placeholder"></ph> 相対イントラサイト URL を使用します。
すべきこと
<h1>Welcome To Example.com</h1>
<script src="//example.com/jquery.js"></script>
<link rel="stylesheet" href="//assets.example.com/style.css"/>
<img src="//img.example.com/logo.png"/>;
<p>A <a href="//example.com/2014/12/24/">new post on cats!</a></p>
<ph type="x-smartling-placeholder"></ph> プロトコル連動型イントラサイト URL を使用します。
すべきこと
<h1>Welcome To Example.com</h1>
<script src="/jquery.js"></script>
<link rel="stylesheet" href="/assets/style.css"/>
<img src="/images/logo.png"/>;
<p>A <a href="/2014/12/24">new post on cats!</a></p>
<p>Check out this <a href="https://foo.com/"><b>other cool site.</b></a></p>
<ph type="x-smartling-placeholder"></ph> 可能であれば、他のサイトへのリンクには HTTPS URL を使用します。

誤りを防ぐため、手動ではなく、スクリプトを使用してリンクを更新してください。お使いの サイトのコンテンツがデータベースにある場合、 データベースですサイトのコンテンツがシンプルなファイルのみの場合は、スクリプトをテストする 開発中のファイルのコピーに 書き込まれます次の時間が経過した場合にのみ、変更を本番環境に push する 通常どおり、変更は QA に合格します。Bram van Damme のスクリプトを使用できます。 混合コンテンツを検出できます

他のサイトにリンクする場合(そのサイトのリソースを含めるのではなく): プロトコルを変更しないでください。サイトの運営方法は管理できません。

大規模なサイトの移行をスムーズにするには、プロトコル連動 URL をおすすめします。 HTTPS を完全に導入できるかどうかわからない場合は、 すべてのサブリソースに HTTPS を使用すると、逆効果になる場合があります。この期間はおそらく、 HTTPS が新しく、奇妙で、HTTP サイトがまだ機能している必要があることを意味します。 できます。徐々に移行を完了し、HTTPS をロックインする (次の 2 つのセクションをご覧ください)。

サイトが第三者から提供されるスクリプト、画像、その他のリソースに依存している場合 追加する場合、次の 2 つのオプションがあります。

  • このようなリソースにはプロトコル連動 URL を使用します。サードパーティが HTTPS でやり取りする場合は、そのように依頼します。jquery.com を含め、ほとんどのベンダーはすでに導入されています。
  • 自身が制御しているサーバーからリソースを提供する。この場合、HTTP と HTTPS の 使用できます。いずれにしても、これは良いアイデアであることが多いです。 コントロール プレーン、パフォーマンス、セキュリティの制御が可能で、 サードパーティを信頼してサイトの安全性を確保します。
で確認できます。

HTTP を HTTPS にリダイレクトする

HTTPS を使用してサイトにアクセスするよう検索エンジンに指示するには、 正規リンク 各ページの見出しを <link rel="canonical" href="https://…"/> タグで囲みます。

Strict Transport Security と安全な Cookie を有効にする

これで「ロックイン」する準備が整いました使用する必要があります。

  • HTTP Strict Transport Security(HSTS)を使用して、301 自動的にリダイレクトされます。
  • Cookie には常に Secure フラグを設定してください。

まず、Strict Transport Security を使用します。 サーバーへの接続には常に HTTPS を使用する必要があることをクライアントに伝えるため、 http:// 参照をフォローする際に使用することをおすすめします。これにより、 SSL ストリッピング また、先ほど有効にした 301 redirect の往復コストも回避できます。 HTTP を HTTPS にリダイレクトする

HSTS を有効にするには、Strict-Transport-Security ヘッダーを設定します。OWASP の HSTS ページ 手順へのリンクがあります 各種サーバー ソフトウェアに使用されています。

ほとんどのウェブサーバーには、カスタム ヘッダーを追加する同様の機能が用意されています。

また、クライアントが Cookie を送信しないようにすることも重要です(例: 認証やサイト設定など)を HTTP 経由で使用できます。たとえば、ユーザーが 平文で公開されると、セキュリティを保証できます。 他の設定をすべて行っても、そのセッションは破棄されます そう!

この問題を回避するには、ウェブアプリで Cookie に常に Secure フラグを設定する 学習しますこの OWASP ページでは、Secure フラグを設定する方法について説明します。 いくつかのアプリ フレームワークで使用されています。どのアプリケーション フレームワークにも、フラグを設定する方法があります。

ほとんどのウェブサーバーにはシンプルなリダイレクト機能があります。301 (Moved Permanently) を使用する HTTPS バージョンが正規であることを検索エンジンやブラウザに知らせるため、 HTTP から HTTPS バージョンのサイトにユーザーをリダイレクトできます。

検索結果での掲載順位

Google はポジティブな検索品質として HTTPS を使用 インジケーターが表示されます。 Google では、既存のアプリケーションを サイトを維持しつつ、 表示されます。Bing では ウェブマスター向けツール

パフォーマンス

コンテンツ レイヤとアプリケーション レイヤが十分に調整されている場合( Steve Souders 氏のサポートしていません)、 パフォーマンスに関する懸念は、アプリケーションの 説明します。また、これらの費用の削減や償却もできます。TLS に関するアドバイス 詳しくは、High Performance Browser Networking( Ilya Grigorik、Ivan Ristic による OpenSSL Cookbook防弾 SSL と TLS

TLS はパフォーマンスの向上につながることがあります。これは主に、 HTTP/2 に対応。詳しくは、Chris Palmer's'HTTPS と HTTP/2 のパフォーマンスについて詳しくは、 Chrome Dev Summit 2014

リファラー ヘッダー

ユーザーが HTTPS サイトから他の HTTP サイトへのリンクをたどると、ユーザー エージェントは、 リファラーヘッダーを送信しませんアクセスがうまくいかない場合は、 解決します。

  • その他のサイトは HTTPS に移行する必要があります。参照先のサイトが 「サーバーで HTTPS を有効にする」セクション このガイドでは、サイトのリンクを http:// から https://、またはプロトコル相対リンクを使用します。
  • リファラー ヘッダーのさまざまな問題を回避するには、 参照 URL のポリシー基準
で確認できます。

広告収益

広告を表示してサイトを収益化しているサイトの運営者は、 HTTPS に移行しても広告のインプレッション数は減少しません。ただし、 HTTP <iframe> は HTTPS ページでは機能しません。 広告主が HTTPS 経由で公開するまで、サイト運営者は HTTPS に移行できません 広告収入を失うことなく運営者が HTTPS に移行するまで HTTPS を公開する意欲がほとんどない

こうした状況を打破するプロセスには、 HTTPS 経由で広告サービスを提供するほか、HTTPS を使わない広告主には 選択肢にすることもできます必要に応じて 広告主が十分な数になるまでイントラサイト URL を相対 URL にする 相互運用性を確保する必要があります