「HTTPS」の版間の差分

提供: セキュリティ
移動: 案内検索
 
行6: 行6:
  
 
== 概要 ==
 
== 概要 ==
[[HTTPS]]は、[[通信プロトコル]]を表す[[URIスキーム]]の1つです。Webの[[通信プロトコル]]の1つである [[Hypertext Transfer Protocol|HTTP]] が SSL/[[Transport Layer Security|TLS]]を利用した状態を [[HTTPS]] と表します。[[Hypertext Transfer Protocol|HTTP]] over [[Transport Layer Security|TLS]] と表現されることがあります。
+
[[HTTPS]]は、[[通信プロトコル]]を表すURIスキームの1つです。Webの[[通信プロトコル]]の1つである [[Hypertext Transfer Protocol|HTTP]] が SSL/[[Transport Layer Security|TLS]]を利用した状態を [[HTTPS]] と表します。[[Hypertext Transfer Protocol|HTTP]] over [[Transport Layer Security|TLS]] と表現されることがあります。
  
 
[[HTTPS]]では、以下の目的でSSL/[[Transport Layer Security|TLS]] を利用します。
 
[[HTTPS]]では、以下の目的でSSL/[[Transport Layer Security|TLS]] を利用します。
  
 
* 通信経路の[[暗号化]]により盗聴やなりすましを防ぎます。
 
* 通信経路の[[暗号化]]により盗聴やなりすましを防ぎます。
** [[パスワード]]や[[個人情報]]、[[決済情報]]などを守ります。
+
** [[パスワード]]や[[個人情報]]、決済情報などを守ります。
** 経路が暗号化されるため[[改竄]]は困難であり、[[ハッシュ値]]で[[改竄]]の検証を行います。
+
** 経路が暗号化されるため改竄は困難であり、[[ハッシュ値]]で改竄の検証を行います。
 
* [[真正性]]の証明します。
 
* [[真正性]]の証明します。
** [[フィッシング]]を防ぎます。
+
** フィッシングを防ぎます。
** [[公開鍵証明書]]に基づく[[認証]]を行います。
+
** 公開鍵証明書に基づく[[認証]]を行います。
  
[[HTTPS]] を利用した、[[URL]] は、以下に示します。
+
[[HTTPS]] を利用した、URL は、以下に示します。
  
 
https://login.yahoo.co.jp/
 
https://login.yahoo.co.jp/
行26: 行26:
  
 
== httpsのページが表示されるまでの流れ ==
 
== httpsのページが表示されるまでの流れ ==
https ではじまる [[URL]] に[[ウェブブラウザ]]がアクセスしようとすると、クライアント(ブラウザ)とサーバの間で以下のようなネゴシエーションが行われます。
+
https ではじまる URL に[[ウェブブラウザ]]がアクセスしようとすると、クライアント(ブラウザ)とサーバの間で以下のようなネゴシエーションが行われます。
  
 
# ブラウザは、サーバにhttpsのリクエストを送信します
 
# ブラウザは、サーバにhttpsのリクエストを送信します
行285: 行285:
 
== インストール ==
 
== インストール ==
 
* [[Apache Module mod_ssl]]
 
* [[Apache Module mod_ssl]]
 
 
== 使い方 ==
 
== 使い方 ==
 
* Web サーバ [[Apache HTTP Server]] で [[HTTPS]]のサービスをする場合には、[[Apache HTTP Server|Apache]] Module の [[Apache Module mod_ssl|mod_ssl]] を利用します。
 
* Web サーバ [[Apache HTTP Server]] で [[HTTPS]]のサービスをする場合には、[[Apache HTTP Server|Apache]] Module の [[Apache Module mod_ssl|mod_ssl]] を利用します。
 
* [[Apache Module mod_ssl]]
 
* [[Apache Module mod_ssl]]
 
 
== 関連項目 ==
 
== 関連項目 ==
 +
* [[TLS]]
 
* [[Apache Module mod ssl]]
 
* [[Apache Module mod ssl]]
 
* [[Apache HTTP Server]]
 
* [[Apache HTTP Server]]
 
* [[SSLサーバ証明書]]
 
* [[SSLサーバ証明書]]
{{ca}}
 
 
* [[電子政府における調達のために参照すべき暗号のリスト]]
 
* [[電子政府における調達のために参照すべき暗号のリスト]]
 
<!-- vim: filetype=mediawiki
 
<!-- vim: filetype=mediawiki
 
-->
 
-->

2015年9月22日 (火) 12:30時点における最新版

HTTPSは、ウェブのアクセスを安全にするためのものです。HTTPSでは、SSL/TLSを利用して、アクセスしているサーバが正しいこと、通信を盗聴や改ざんから防ぐための暗号化を実現します。URLは、「https://」で始まります。

読み方

HTTPS
えいちてぃーてぃーぴーえす

概要

HTTPSは、通信プロトコルを表すURIスキームの1つです。Webの通信プロトコルの1つである HTTP が SSL/TLSを利用した状態を HTTPS と表します。HTTP over TLS と表現されることがあります。

HTTPSでは、以下の目的でSSL/TLS を利用します。

  • 通信経路の暗号化により盗聴やなりすましを防ぎます。
  • 真正性の証明します。
    • フィッシングを防ぎます。
    • 公開鍵証明書に基づく認証を行います。

HTTPS を利用した、URL は、以下に示します。

https://login.yahoo.co.jp/

HTTPSは、 ID登録画面、ログイン画面、ショッピングでの決済画面、銀行口座、ネット証券、個人情報入力画面などで利用されます。

HTTPSでは、HTTP コネクションで利用するポート(80)とは異なるポート番号(443)が利用されます。

httpsのページが表示されるまでの流れ

https ではじまる URL にウェブブラウザがアクセスしようとすると、クライアント(ブラウザ)とサーバの間で以下のようなネゴシエーションが行われます。

  1. ブラウザは、サーバにhttpsのリクエストを送信します
  2. ブラウザとサーバで利用する暗号方式を決定します
  3. サーバからブラウザにSSLサーバ証明書と公開鍵を送付します。
  4. ブラウザは、プリマスターシークレットを送信し、ブラウザとサーバで共通鍵を生成します。
  5. ブラウザとサーバは、共通鍵を使用して、データを暗号化して送受信します。

暗号アルゴリズムの決定メカニズム

たいていの場合、クライアントとサーバは、複数の暗号アルゴリズムが使用できます。そのため、通信を開始する前に、使用するアルゴリズムを決定しなければなりません。

  1. クライアントは、サーバにSSL通信をリクエストするときに、サーバに利用可能な暗号アルゴリズムのリストを送付します。
  2. サーバは、使用するアルゴリズムを選択し、決定します。
  3. サーバは、SSLサーバ証明書と利用する暗号アルゴリズムをクライアントに送信します。
  4. クライアントは、サーバから受信した情報にもとづいて、データを暗号化します。

クライアントから送信されるアルゴリズムのリストは、優先度順に並べてあります。

暗号アルゴリズムの例

共通鍵鍵暗号方式の鍵長が128bitより大きい暗号スイートだけを表示しています。

$ openssl ciphers -v 'HIGH'

openssl ciphersの意味
項目 意味
- 暗号スイート
- バージョン
Kx 鍵交換のアルゴリズム
Au 認証のアルゴリズム
Enc 一括暗号アルゴリズム
Mac メッセージ認証符号
暗号スイート バージョン 鍵交換のアルゴリズム 認証のアルゴリズム 一括暗号アルゴリズム メッセージ認証符号
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES256-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
SRP-DSS-AES-256-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=AES(256) Mac=SHA1
SRP-RSA-AES-256-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(256) Mac=SHA256
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(256) Mac=SHA1
DHE-DSS-CAMELLIA256-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(256) Mac=SHA1
AECDH-AES256-SHA SSLv3 Kx=ECDH Au=None Enc=AES(256) Mac=SHA1
SRP-AES-256-CBC-SHA SSLv3 Kx=SRP Au=None Enc=AES(256) Mac=SHA1
ADH-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=None Enc=AESGCM(256) Mac=AEAD
ADH-AES256-SHA256 TLSv1.2 Kx=DH Au=None Enc=AES(256) Mac=SHA256
ADH-AES256-SHA SSLv3 Kx=DH Au=None Enc=AES(256) Mac=SHA1
ADH-CAMELLIA256-SHA SSLv3 Kx=DH Au=None Enc=Camellia(256) Mac=SHA1
ECDH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(256) Mac=AEAD
ECDH-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(256) Mac=AEAD
ECDH-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(256) Mac=SHA384
ECDH-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA384
ECDH-RSA-AES256-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(256) Mac=SHA1
ECDH-ECDSA-AES256-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA1
AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD
AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
CAMELLIA256-SHA SSLv3 Kx=RSA Au=RSA Enc=Camellia(256) Mac=SHA1
PSK-AES256-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(256) Mac=SHA1
ECDHE-RSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=RSA Enc=3DES(168) Mac=SHA1
ECDHE-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=3DES(168) Mac=SHA1
SRP-DSS-3DES-EDE-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=3DES(168) Mac=SHA1
SRP-RSA-3DES-EDE-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=3DES(168) Mac=SHA1
EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1
AECDH-DES-CBC3-SHA SSLv3 Kx=ECDH Au=None Enc=3DES(168) Mac=SHA1
SRP-3DES-EDE-CBC-SHA SSLv3 Kx=SRP Au=None Enc=3DES(168) Mac=SHA1
ADH-DES-CBC3-SHA SSLv3 Kx=DH Au=None Enc=3DES(168) Mac=SHA1
ECDH-RSA-DES-CBC3-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=3DES(168) Mac=SHA1
ECDH-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=3DES(168) Mac=SHA1
DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
DES-CBC3-MD5 SSLv2 Kx=RSA Au=RSA Enc=3DES(168) Mac=MD5
PSK-3DES-EDE-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=3DES(168) Mac=SHA1
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
ECDHE-RSA-AES128-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
ECDHE-ECDSA-AES128-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
SRP-DSS-AES-128-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=AES(128) Mac=SHA1
SRP-RSA-AES-128-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=AES(128) Mac=SHA1
DHE-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256
DHE-DSS-AES128-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(128) Mac=SHA256
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(128) Mac=SHA1
DHE-DSS-CAMELLIA128-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(128) Mac=SHA1
AECDH-AES128-SHA SSLv3 Kx=ECDH Au=None Enc=AES(128) Mac=SHA1
SRP-AES-128-CBC-SHA SSLv3 Kx=SRP Au=None Enc=AES(128) Mac=SHA1
ADH-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=None Enc=AESGCM(128) Mac=AEAD
ADH-AES128-SHA256 TLSv1.2 Kx=DH Au=None Enc=AES(128) Mac=SHA256
ADH-AES128-SHA SSLv3 Kx=DH Au=None Enc=AES(128) Mac=SHA1
ADH-CAMELLIA128-SHA SSLv3 Kx=DH Au=None Enc=Camellia(128) Mac=SHA1
ECDH-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(128) Mac=AEAD
ECDH-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(128) Mac=AEAD
ECDH-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(128) Mac=SHA256
ECDH-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128) Mac=SHA256
ECDH-RSA-AES128-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(128) Mac=SHA1
ECDH-ECDSA-AES128-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128) Mac=SHA1
AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD
AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
CAMELLIA128-SHA SSLv3 Kx=RSA Au=RSA Enc=Camellia(128) Mac=SHA1
PSK-AES128-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(128) Mac=SHA1

CRYPTRECは、推奨するアルゴリズムの調査、検討を行い、 電子政府における調達のために参照すべき暗号のリスト として発表しています。

アルゴリズムの選び方

2010年以前は、公開鍵は、1024ビット長が主流でした。コンピュータの性能向上に伴い、2010年には、解読可能な状態になると考えられ、2048ビット長の鍵が主流になりました。

SSLの通信で使用されるアルゴリズムは、公開されています。暗号データは、暗号化と復号で使用されるで守られています。アルゴリズムがわかっているため、が重要になってきます。

鍵長を長くすることで、暗号は解読されにくくなります。しかし、その分、暗号処理(暗号化、復号化)に計算機コスト(時間)がかかるようになり、あまり強度を上げ過ぎると実用的ではなくなってしまいます。

アルゴリズムの選択が必要になる場合

たいていの場合、暗号アルゴリズムを意識することはありません。

暗号アルゴリズムを意図的に選択する場合には、以下のようなケースがあるでしょう。

  • 環境の制限により使用できる暗号アルゴリズムが限定される
  • 安全性の高いアルゴリズムを使用したい場合
  • セキュリティ問題に対処したい場合

SSL プロトコル

  • SSLv2 は、使用しません。
  • SSLv3 は、廃止されています。
  • TLS v1.0 の大部分は、安全です。
  • TLS v1.1 は、問題ありません。
  • TLS v1.2 は、問題ありません。

Apache での設定の例

SSLProtocol ALL -SSLv2
SSLHonorCipherOrder On
SSLCipherSuite ECDHE+RSAGCM:ECDH+AESGCM:
               DH+AESGCM:ECDH+AES256:DH+AES256:
               ECDH+AES128:DH+AES:
               !aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS

インストール

使い方

関連項目