「HTTPS」の版間の差分
(→関連項目) |
|||
行1: | 行1: | ||
− | + | [[HTTPS]]は、ウェブのアクセスを安全にするためのものです。[[HTTPS]]では、[[SSL]]/[[TLS]]を利用して、アクセスしているサーバが正しいこと、通信を盗聴や改ざんから防ぐための暗号化を実現します。URLは、「https://」で始まります。 | |
− | + | ||
− | + | ||
− | + | ||
− | [[HTTPS]] | + | |
− | + | ||
− | + | ||
+ | '''読み方''' | ||
+ | ;[[HTTPS]: えいちてぃーてぃーぴーえす | ||
__TOC__ | __TOC__ | ||
− | |||
− | |||
== 概要 == | == 概要 == | ||
+ | [[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/[[ | + | [[HTTPS]]では、以下の目的でSSL/[[Transport Layer Security|TLS]] を利用します。 |
* 通信経路の[[暗号化]]により盗聴やなりすましを防ぎます。 | * 通信経路の[[暗号化]]により盗聴やなりすましを防ぎます。 | ||
行28: | 行23: | ||
[[HTTPS]]は、 ID登録画面、ログイン画面、ショッピングでの決済画面、銀行口座、ネット証券、個人情報入力画面などで利用されます。 | [[HTTPS]]は、 ID登録画面、ログイン画面、ショッピングでの決済画面、銀行口座、ネット証券、個人情報入力画面などで利用されます。 | ||
− | [[HTTPS]]では、[[ | + | [[HTTPS]]では、[[Hypertext Transfer Protocol|HTTP]] コネクションで利用するポート(80)とは異なる[[ポート番号]](443)が利用されます。 |
− | == | + | == httpsのページが表示されるまでの流れ == |
+ | https ではじまる [[URL]] に[[ウェブブラウザ]]がアクセスしようとすると、クライアント(ブラウザ)とサーバの間で以下のようなネゴシエーションが行われます。 | ||
− | + | # ブラウザは、サーバにhttpsのリクエストを送信します | |
+ | # ブラウザとサーバで利用する暗号方式を決定します | ||
+ | # サーバからブラウザにSSLサーバ証明書と[[公開鍵]]を送付します。 | ||
+ | # ブラウザは、プリマスターシークレットを送信し、ブラウザとサーバで共通鍵を生成します。 | ||
+ | # ブラウザとサーバは、[[共通鍵]]を使用して、データを暗号化して送受信します。 | ||
− | == | + | == 暗号アルゴリズムの決定メカニズム == |
+ | たいていの場合、クライアントとサーバは、複数の[[暗号アルゴリズム]]が使用できます。そのため、通信を開始する前に、使用するアルゴリズムを決定しなければなりません。 | ||
− | + | # クライアントは、サーバにSSL通信をリクエストするときに、サーバに利用可能な[[暗号アルゴリズム]]のリストを送付します。 | |
− | + | # サーバは、使用するアルゴリズムを選択し、決定します。 | |
+ | # サーバは、SSLサーバ証明書と利用する[[暗号アルゴリズム]]をクライアントに送信します。 | ||
+ | # クライアントは、サーバから受信した情報にもとづいて、データを暗号化します。 | ||
− | + | クライアントから送信されるアルゴリズムのリストは、優先度順に並べてあります。 | |
+ | == 暗号アルゴリズムの例 == | ||
+ | 共通鍵鍵暗号方式の鍵長が128bitより大きい暗号スイートだけを表示しています。 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ openssl ciphers -v 'HIGH' | ||
+ | </syntaxhighlight> | ||
+ | <html> | ||
+ | <!-- openssl ciphers -v 'HIGH' | awk '{ print "\t|-\n", "\t|" $1, "||" $2 "||" $3 "||" $4 "||" $5 "||" $6 }' --> | ||
+ | </html> | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |+ openssl ciphersの意味 | ||
+ | ! 項目 | ||
+ | ! 意味 | ||
+ | |- | ||
+ | | - | ||
+ | | 暗号スイート | ||
+ | |- | ||
+ | | - | ||
+ | | バージョン | ||
+ | |- | ||
+ | | Kx | ||
+ | | 鍵交換のアルゴリズム | ||
+ | |- | ||
+ | | Au | ||
+ | | 認証のアルゴリズム | ||
+ | |- | ||
+ | | Enc | ||
+ | | 一括暗号アルゴリズム | ||
+ | |- | ||
+ | | Mac | ||
+ | | メッセージ認証符号 | ||
+ | |} | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |+ | ||
+ | ! 暗号スイート | ||
+ | ! バージョン | ||
+ | ! 鍵交換のアルゴリズム | ||
+ | ! 認証のアルゴリズム | ||
+ | ! 一括暗号アルゴリズム | ||
+ | ! メッセージ認証符号 | ||
+ | |- | ||
+ | |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 での設定の例 == | ||
+ | |||
+ | <syntaxhighlight lang="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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == インストール == | ||
+ | * [[Apache Module 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]] | * [[Apache Module mod ssl]] | ||
* [[Apache HTTP Server]] | * [[Apache HTTP Server]] | ||
行46: | 行296: | ||
{{ca}} | {{ca}} | ||
+ | * [[電子政府における調達のために参照すべき暗号のリスト]] | ||
+ | <!-- vim: filetype=mediawiki | ||
+ | --> |
2014年6月7日 (土) 19:57時点における版
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は、 ID登録画面、ログイン画面、ショッピングでの決済画面、銀行口座、ネット証券、個人情報入力画面などで利用されます。
HTTPSでは、HTTP コネクションで利用するポート(80)とは異なるポート番号(443)が利用されます。
httpsのページが表示されるまでの流れ
https ではじまる URL にウェブブラウザがアクセスしようとすると、クライアント(ブラウザ)とサーバの間で以下のようなネゴシエーションが行われます。
- ブラウザは、サーバにhttpsのリクエストを送信します
- ブラウザとサーバで利用する暗号方式を決定します
- サーバからブラウザにSSLサーバ証明書と公開鍵を送付します。
- ブラウザは、プリマスターシークレットを送信し、ブラウザとサーバで共通鍵を生成します。
- ブラウザとサーバは、共通鍵を使用して、データを暗号化して送受信します。
暗号アルゴリズムの決定メカニズム
たいていの場合、クライアントとサーバは、複数の暗号アルゴリズムが使用できます。そのため、通信を開始する前に、使用するアルゴリズムを決定しなければなりません。
- クライアントは、サーバにSSL通信をリクエストするときに、サーバに利用可能な暗号アルゴリズムのリストを送付します。
- サーバは、使用するアルゴリズムを選択し、決定します。
- サーバは、SSLサーバ証明書と利用する暗号アルゴリズムをクライアントに送信します。
- クライアントは、サーバから受信した情報にもとづいて、データを暗号化します。
クライアントから送信されるアルゴリズムのリストは、優先度順に並べてあります。
暗号アルゴリズムの例
共通鍵鍵暗号方式の鍵長が128bitより大きい暗号スイートだけを表示しています。
$ openssl ciphers -v 'HIGH'
項目 | 意味 |
---|---|
- | 暗号スイート |
- | バージョン |
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
インストール
使い方
- Web サーバ Apache HTTP Server で HTTPSのサービスをする場合には、Apache Module の mod_ssl を利用します。
- Apache Module mod_ssl