スポンサーリンク

VMWare上のLinuxで,Apacheに自己署名のSSL通信をさせるための手順 (オレオレ証明書で,仮想マシン上のWebサーバにHTTPS接続)

Apache Webサーバとの間で,SSLによる「暗号化された通信」を行なう。

サーバにアクセスする際のURLは,https://〜〜 になる。

そのための環境構築の方法をメモした手順書。


暗号化のためのサーバ証明書は,自前で生成する。(=オレオレ証明書)

また,通信の内容が暗号化されている様子を,パケットキャプチャによって直に目で見て,安全性を確認する。

  • (1)仮想マシンのLinux上にApacheを導入
  • (2)暗号化されていないHTTP通信を「盗聴」可能であることの確認
  • (3)SSLパッケージの準備
  • (4)秘密鍵を生成
  • (5)自己署名によるサーバ証明書の作成
  • (6)ApacheにHTTPS通信の設定を実施
  • (7)暗号化されているHTTPS通信を「盗聴」不可能であることの確認

ここで,ApacheはLinux(CentOS)上で動作しており,LinuxはVMWare Server上の仮想マシンであるとする。

ホスト側のマシンのブラウザから,仮想マシン上のWebサーバにアクセスする。

Webサーバにはドメイン名を設定しておらず,IPアドレスだけを使う。


(1)仮想マシンのLinux上にApacheを導入

Linux上へのApacheの導入手順は,下記ページを参照。

CentOS 5.6上で Apache+Passenger+Ruby on Rails 1.2 を動作させる手順 (仮想マシン上に,レガシーRailsの実運用環境を構築)
http://language-and-engineering.hatenablog.jp/entry/20110814/p1

  • (6)Apacheのインストール
  • (7)Apacheの動作確認

(2)暗号化されていないHTTP通信を「盗聴」可能であることの確認

HTTPプロトコルで通信している,という事は,暗号化されていないので,内容を誰でも盗み見ることが可能という事だ。

その確認をする。


まず,Apacheの公開ディレクトリ /var/www/html 上に,下記のHTMLを設置。

hoge.html

This is secret information.


次に,ホスト側のブラウザから,下記のURLにアクセス。

HTMLの内容がちゃんと表示できることを確認する。


※注:"information" は基本的に不可算名詞。

英語の謎16
http://www.h4.dion.ne.jp/~maimai66/co...

  • 「案内所、受付」という可算名詞の意味ならばinformationsのようにsがついても問題ない


次に,Linux上で下記のコマンドを実行する。

# tcpdump -s0 -i eth0 -X port 80

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

コンソールが待ち状態になる。


なおtcpdumpは,パケットキャプチャのコマンドである。(Windows上のツールだとWireshark/Etherealがある)

上のコマンドオプションでは:

  • s0でキャプチャサイズに上限を設けない事にしている。
  • 監視対象のネットワークアダプタをeth0にしている。(仮想環境でホスト・クライアント間をつないでいるアダプタを選ぶこと)
  • HTTP通信,つまり80番のTCPポートを経由した通信だけを監視するようにフィルタリングしている。(これをしないと,SSH通信など他の全ポートの通信内容がごちゃまぜになってしまう)

tcpdumpを使ってみよう!
http://linux-biyori.sakura.ne.jp/sett...


この状態で,ブラウザ上でCTRL+F5を押下。

ブラウザ上でページが再表示される。


そして,コンソール上で,通信した際のパケットの内容がまるごと表示される。


たった1ページ表示するだけでも,HTTP通信のやり取りは数回行われている。

その中には,「This is secret information.」というページの閲覧内容も含まれている。

※下記では,★印を付けてある箇所。

00:11:16.507676 IP 192.168.19.1.4624 > 192.168.19.128.http: S 2119691136:2119691136(0) win 65535 <mss 1460,nop,nop,sackOK>
 0x0000:  4500 0030 2717 4000 8006 2bdf c0a8 1301  E..0'.@...+.....
 0x0010:  c0a8 1380 1210 0050 7e57 eb80 0000 0000  .......P~W......
 0x0020:  7002 ffff 5f15 0000 0204 05b4 0101 0402  p..._...........

00:11:16.856116 IP 192.168.19.128.http > 192.168.19.1.4624: S 2738300351:2738300351(0) ack 2119691137 win 5840 <mss 1460,nop,nop,sackOK>
 0x0000:  4500 0030 0000 4000 4006 92f6 c0a8 1380  E..0..@.@.......
 0x0010:  c0a8 1301 0050 1210 a337 25bf 7e57 eb81  .....P...7%.~W..
 0x0020:  7012 16d0 7f3d 0000 0204 05b4 0101 0402  p....=..........

00:11:16.856214 IP 192.168.19.1.4624 > 192.168.19.128.http: . ack 1 win 65535
 0x0000:  4500 0028 2718 4000 8006 2be6 c0a8 1301  E..('.@...+.....
 0x0010:  c0a8 1380 1210 0050 7e57 eb81 a337 25c0  .......P~W...7%.
 0x0020:  5010 ffff c2d1 0000 0000 0000 0000       P.............

00:11:16.512547 IP 192.168.19.1.4624 > 192.168.19.128.http: P 1:343(342) ack 1 win 65535
 0x0000:  4500 017e 271a 4000 8006 2a8e c0a8 1301  E..~'.@...*.....
 0x0010:  c0a8 1380 1210 0050 7e57 eb81 a337 25c0  .......P~W...7%.
 0x0020:  5018 ffff 57de 0000 4745 5420 2f68 6f67  P...W...GET./hog
 0x0030:  652e 6874 6d6c 2048 5454 502f 312e 310d  e.html.HTTP/1.1.
 0x0040:  0a48 6f73 743a 2031 3932 2e31 3638 2e31  .Host:.192.168.1
 0x0050:  392e 3132 380d 0a55 7365 722d 4167 656e  9.128..User-Agen
 0x0060:  743a 204d 6f7a 696c 6c61 2f35 2e30 2028  t:.Mozilla/5.0.(
 0x0070:  5769 6e64 6f77 7320 4e54 2035 2e31 3b20  Windows.NT.5.1;.
 0x0080:  7276 3a31 322e 3029 2047 6563 6b6f 2f32  rv:12.0).Gecko/2
 0x0090:  3031 3030 3130 3120 4669 7265 666f 782f  0100101.Firefox/
 0x00a0:  3132 2e30 0d0a 4163 6365 7074 3a20 7465  12.0..Accept:.te
 0x00b0:  7874 2f68 746d 6c2c 6170 706c 6963 6174  xt/html,applicat
 0x00c0:  696f 6e2f 7868 746d 6c2b 786d 6c2c 6170  ion/xhtml+xml,ap
 0x00d0:  706c 6963 6174 696f 6e2f 786d 6c3b 713d  plication/xml;q=
 0x00e0:  302e 392c 2a2f 2a3b 713d 302e 380d 0a41  0.9,*/*;q=0.8..A
 0x00f0:  6363 6570 742d 4c61 6e67 7561 6765 3a20  ccept-Language:.
 0x0100:  6a61 2c65 6e2d 7573 3b71 3d30 2e37 2c65  ja,en-us;q=0.7,e
 0x0110:  6e3b 713d 302e 330d 0a41 6363 6570 742d  n;q=0.3..Accept-
 0x0120:  456e 636f 6469 6e67 3a20 677a 6970 2c20  Encoding:.gzip,.
 0x0130:  6465 666c 6174 650d 0a43 6f6e 6e65 6374  deflate..Connect
 0x0140:  696f 6e3a 206b 6565 702d 616c 6976 650d  ion:.keep-alive.
 0x0150:  0a50 7261 676d 613a 206e 6f2d 6361 6368  .Pragma:.no-cach
 0x0160:  650d 0a43 6163 6865 2d43 6f6e 7472 6f6c  e..Cache-Control
 0x0170:  3a20 6e6f 2d63 6163 6865 0d0a 0d0a       :.no-cache....

00:11:16.512674 IP 192.168.19.128.http > 192.168.19.1.4624: . ack 343 win 6432
 0x0000:  4500 0028 accb 4000 4006 e632 c0a8 1380  E..(..@.@..2....
 0x0010:  c0a8 1301 0050 1210 a337 25c0 7e57 ecd7  .....P...7%.~W..
 0x0020:  5010 1920 a85b 0000                      P....[..
00:11:16.513938 IP 192.168.19.128.http > 192.168.19.1.4624: P 1:290(289) ack 343 win 6432
 0x0000:  4500 0149 accc 4000 4006 e510 c0a8 1380  E..I..@.@.......
 0x0010:  c0a8 1301 0050 1210 a337 25c0 7e57 ecd7  .....P...7%.~W..
 0x0020:  5018 1920 3ad8 0000 4854 5450 2f31 2e31  P...:...HTTP/1.1
 0x0030:  2032 3030 204f 4b0d 0a44 6174 653a 2057  .200.OK..Date:.W
 0x0040:  6564 2c20 3237 204a 756e 2032 3031 3220  ed,.27.Jun.2012.
 0x0050:  3135 3a31 313a 3136 2047 4d54 0d0a 5365  15:11:16.GMT..Se
 0x0060:  7276 6572 3a20 4170 6163 6865 2f32 2e32  rver:.Apache/2.2
 0x0070:  2e33 2028 4365 6e74 4f53 290d 0a4c 6173  .3.(CentOS)..Las
 0x0080:  742d 4d6f 6469 6669 6564 3a20 5765 642c  t-Modified:.Wed,
 0x0090:  2032 3720 4a75 6e20 3230 3132 2030 363a  .27.Jun.2012.06:
 0x00a0:  3131 3a31 3320 474d 540d 0a45 5461 673a  11:13.GMT..ETag:
 0x00b0:  2022 3163 3932 3331 2d31 622d 3135 3030  ."1c9231-1b-1500
 0x00c0:  3432 3430 220d 0a41 6363 6570 742d 5261  4240"..Accept-Ra
 0x00d0:  6e67 6573 3a20 6279 7465 730d 0a43 6f6e  nges:.bytes..Con
 0x00e0:  7465 6e74 2d4c 656e 6774 683a 2032 370d  tent-Length:.27.
 0x00f0:  0a43 6f6e 6e65 6374 696f 6e3a 2063 6c6f  .Connection:.clo
 0x0100:  7365 0d0a 436f 6e74 656e 742d 5479 7065  se..Content-Type
 0x0110:  3a20 7465 7874 2f68 746d 6c3b 2063 6861  :.text/html;.cha
 0x0120:  7273 6574 3d55 5446 2d38 0d0a 0d0a 5468  rset=UTF-8....Th ★
 0x0130:  6973 2069 7320 7365 6372 6574 2069 6e66  is.is.secret.inf
 0x0140:  6f72 6d61 7469 6f6e 2e                   ormation.

00:11:16.563991 IP 192.168.19.1.4624 > 192.168.19.128.http: F 343:343(0) ack 290 win 65246
 0x0000:  4500 0028 271c 4000 8006 2be2 c0a8 1301  E..('.@...+.....
 0x0010:  c0a8 1380 1210 0050 7e57 ecd7 a337 26e1  .......P~W...7&.
 0x0020:  5011 fede c17a 0000 0000 0000 0000       P....z........

00:11:16.564352 IP 192.168.19.128.http > 192.168.19.1.4624: F 290:290(0) ack 344 win 6432
 0x0000:  4500 0028 accd 4000 4006 e630 c0a8 1380  E..(..@.@..0....
 0x0010:  c0a8 1301 0050 1210 a337 26e1 7e57 ecd8  .....P...7&.~W..
 0x0020:  5011 1920 a738 0000                      P....8..

00:11:16.565348 IP 192.168.19.1.4624 > 192.168.19.128.http: . ack 291 win 65246
 0x0000:  4500 0028 271e 4000 8006 2be0 c0a8 1301  E..('.@...+.....
 0x0010:  c0a8 1380 1210 0050 7e57 ecd8 a337 26e2  .......P~W...7&.
 0x0020:  5010 fede c179 0000 0000 0000 0000       P....y........

このように,ブラウザとWebサーバの間での通信内容は,暗号化されていないので,間に存在するNW機器において内容を丸ごと読み取り可能である。

ブラウザのユーザエージェント情報などもパケット内のHTTPリクエストヘッダ中に含まれているので,上記で全部見えている。


もし,ブラウザ側から「クレジットカードの番号」などの機密情報をWebサーバに対してPOSTなんかしたら,その情報も丸ごと,途中の経路でキャプチャされるのである。


その事が理解できたら,コンソール上でCTRL+Cを押下してtcpdumpを停止する。


※なお,キャプチャ情報中で「ack」と書かれているのは,TCP/IP通信において接続を確立させるためのサインだ。

通信のしくみ(TCP/IP)
http://www.nina.jp/server/basic/tcpip...

(3)SSLパッケージの準備

SSL関連のパッケージが入っているか確認。

# rpm -qa ssl

OpenSSLやmod_sslがインストールされていなければ,下記の手順でインストールを実行する。

# yum install mod_ssl

# yum install openssl

# openssl version
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008


参考:

apache+mod_sslによるSSL設定
http://www.server-memo.net/server-set...

(4)秘密鍵を生成

秘密鍵の置き場を作ってから,秘密鍵を生成する。

# mkdir -p /etc/httpd/conf/ssl.key

# cd /etc/httpd/conf/ssl.key/

# openssl genrsa -des3 -out server.key 1024

こうすると,「Enter pass phrase for server.key:」として,秘密鍵に設定したいパスワードを聞かれる。

2回パスワードを入力し,パスワードは厳重に管理する。


カレントディレクトリ内に,「server.key」というファイルが作成されたことを確認。


この拡張子.keyのファイルが,秘密鍵である。大事に保管すべし。

秘密鍵が盗まれると,暗号化された通信でも中身を読み取る事ができてしまうから。

WiresharkでSSL復号できるんです☆
https://www.softbanktech.jp/yko/2010/...

  • パケットキャプチャソフトに対して秘密鍵を渡す事により,暗号化されたパケットの内容も読めてしまう

ここで,パスワード付きの秘密鍵を運用するのが面倒な場合は,パスワードなしの秘密鍵を作り直すこともできる。

パスワード有りだと,サーバの起動のたびにパスワードの入力が必要になるので,自動起動ができないのだ。

ただしパスワードがない場合は盗難・流出時の誤用リスクが高まるので,その点は注意すること。


パスワードなしに作り直す手順:

# mv server.key server.key_org

# openssl rsa -in server.key_org -out server.key

(パスワードを入力)

writing RSA key

これでOK。



安全のため,他人から読まれないようにする。

# chmod 400 server.key

(5)自己署名によるサーバ証明書の作成

まず,署名要請書(CSRファイル,Certificate Signing Request)を作る。

次に,そのCSRファイルを基に自己署名を行ない,サーバ証明書(CRTファイル,署名付き公開鍵)を作る。


事前に,拡張子やファイルの種類について理解しておいた方がよいかもしれない。

SSL関係の拡張子は、それぞれどんな意味があるのか
http://q.hatena.ne.jp/1188202204

  • 役割の違い:key=秘密鍵,csr=証明書発行要求,crt=証明書
  • 形式の違い:DER(Distinguished Encoding Rules)形式 / PEM(Privacy Enhanced Mail)形式。PEM形式は、DER形式(バイナリ)をBASE64で可視化したもの


PEM形式のCSRのサポート終了について
https://www.verisign.co.jp/ssl/about/...

  • PEM形式のCSR:-----BEGIN PRIVACY-ENHANCED MESSAGE-----で始まる
  • PKCS#10形式のCSR:-----BEGIN CERTIFICATE REQUEST-----で始まる


公開鍵証明書
http://lab.moyo.biz/recipes/java/secu...

  • 公開鍵証明書:公開鍵のバイナリが正しいことをデジタル署名で保障する電子証明書。公開鍵はこの公開鍵証明書と一緒に配布される
  • 自己署名証明書:身元情報などを好きなように付けられるため、鍵や証明書のすり替えを検知できず,理論的には不正中継が可能になりうる

CSRファイルを作成する際には,いろいろ質問される。一つ一つ回答していく。

# openssl req -new -key server.key -out server.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) [GB]:JP
State or Province Name (full name) [Berkshire]:都道府県名を入力
Locality Name (eg, city) [Newbury]:市町村を入力
Organization Name (eg, company) [My Company Ltd]:組織名を入力
Organizational Unit Name (eg, section) []:部署名を入力
Common Name (eg, your name or your server's hostname) []:192.168.19.128(これは一例)
Email Address []:(何も入力しない)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:(何も入力しない)
An optional company name []:(何も入力しない)

上記のCommon Name (CN)には,ブラウザからアクセスする際のサーバ名を入力する。

DNSやhostsを一切使わず,IPアドレスでアクセスするならば,IPアドレスを入力すればよい。

ただし,ここで入力したCommon Nameは,あとでApacheの設定ファイルに同じ値を入力する必要が生じるので,手元に控えておくこと。



これでserver.csrという署名要請ファイルが生成された。



で,そのCSRファイルを元に,誰かに署名を要請するわけだが,

ふつうに公的な認証局(CA,Certificate Authority)に署名を要請すると,1年間で10万円〜数十万円などの予算が必要だ。

VeriSign 製品価格一覧
https://www.verisign.co.jp/ssl/chart....

  • SSLサーバ証明書関連

そこで,費用がかかるのを避けて,自前で署名を行なってしまうのが「自己署名」。

自己署名の結果で生成されるサーバ証明書が「オレオレ証明書」。


自分で署名要請を出しておいて,自分自身で署名してしまうのだ。

※これは個人用のサーバのための手段であって,www上に公開する本番環境のサーバに対してはこういう事はしない。



さっそく自己署名を行なう。

# mkdir -p /etc/httpd/conf/ssl.crt

# openssl x509 -in server.csr -out ../ssl.crt/server.crt -req -signkey server.key -days 3650

これで,オレオレ証明書(CRTファイル)が生成された。


(6)ApacheにHTTPS通信の設定を実施

署名の手段はどうであれ,とにかくサーバ証明書が手に入ったので,これをサーバに設置する。

Apacheが,CRTファイルを認識できるようにすればよい。


SSLに関する設定ファイル /etc/httpd/conf.d/ssl.conf を取得して,内容を編集する。

#<VirtualHost _default_:443>
<VirtualHost 192.168.19.128:443>
ServerName 192.168.19.128

#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt

#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key

VirtualHostとServerNameの項には,先ほど証明書を生成する際に入力した「Common Name」を記述する。

記入ミスがないように注意。

また,編集の際には,改行コードがLFであるように注意。


参考:

Apache+mod_ssl+Opensslの環境設定について
http://www.apache.jp/pipermail/apache...
SSL における CommonName(CN) は HTTP ホスト名に完全に一致していな
ければなりません。つまり CN=spare という証明書を作った場合
https://spare/ でアクセスしなければなりません。


ServerNameの設定ミスによるSSLエラー
http://www.uetyi.mydns.jp/wordpress/l...

  • mod_sslでは、VirtualHostにCNと同じServerNameがついていないと警告メッセージをログに出力
  • エラーログの出力内容:[warn] RSA server certificate CommonName (CN) `〜〜' does NOT match server name!?

設定ファイルの編集と更新が完了したら,サーバを再起動。

# /etc/init.d/httpd restart

このままだとSSL用のポートがブロックされていてつながらないので,443番ポートを開ける。

/etc/init.d/iptables stop

※このコマンドはiptables自体を止めている。セキュリティ確保のためには,本来はiptablesを止めてはならない。

参考:

linux sslが繋がらない ポート開放
http://labs.21ma.net/?p=128

  • netstat -aしても、しっかりhttpsが[listen]してる。と思ったら、443ポートがあいてませんでした

※Windows XP上から,Linuxの特定のポートが開放されているかどうかを調べるためには,下記のようなコマンドをコマンドプロンプトから実行する。

>netsh diag connect iphost 192.168.19.128 80

IPHost (192.168.19.128)
    IPHost = 192.168.19.128
    Port = 80
    サーバーは次のポートで実行中と思われます [80]

>netsh diag connect iphost 192.168.19.128 443

IPHost (192.168.19.128)
    IPHost = 192.168.19.128
    Port = 443
    サーバーは次のポートで実行中と思われます [なし]


これで,SSL通信の準備ができた。


(7)暗号化されているHTTPS通信を「盗聴」不可能であることの確認

ブラウザで,下記のURLにアクセス。プロトコルがhttpではなく,httpsである点に注意。

自己署名のサーバ証明書なので,「セキュリティ例外の承認」等の操作が必要。

だが,それが終われば,ふつうにWebページが表示される。



さて,ここで重要なのは

  • 上記で「ふつうに」表示されたWebページが,セキュアな(盗聴できない)通信のもとで表示されている。

という点だ。

それを確認する。


SSL通信なので,80番ポートでは何も起こっていない。443番ポートを監視してみる。

コンソールから,パケットキャプチャを開始:

# tcpdump -s0 -i eth0 -X port 443
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes


この状態で,ブラウザの画面をリロード。

コンソールには,下記のようなSSL通信の過程がダンプされる。

08:46:39.026965 IP 192.168.19.1.www-dev > 192.168.19.128.https: S 2430010324:2430010324(0) win 65535 <mss 1460,nop,nop,sackOK>
        0x0000:  4500 0030 ac79 4000 8006 a67c c0a8 1301  E..0.y@....|....
        0x0010:  c0a8 1380 0ae0 01bb 90d7 03d4 0000 0000  ................
        0x0020:  7002 ffff 3a07 0000 0204 05b4 0101 0402  p...:...........

08:46:39.131319 IP 192.168.19.128.https > 192.168.19.1.www-dev: S 3571341630:3571341630(0) ack 2430010325 win 5840 <mss 1460,nop,nop,sackOK>
        0x0000:  4500 0030 0000 4000 4006 92f6 c0a8 1380  E..0..@.@.......
        0x0010:  c0a8 1301 01bb 0ae0 d4de 593e 90d7 03d5  ..........Y>....
        0x0020:  7012 16d0 f508 0000 0204 05b4 0101 0402  p...............

08:46:39.133220 IP 192.168.19.1.www-dev > 192.168.19.128.https: . ack 1 win 65535
        0x0000:  4500 0028 ac7a 4000 8006 a683 c0a8 1301  E..(.z@.........
        0x0010:  c0a8 1380 0ae0 01bb 90d7 03d5 d4de 593f  ..............Y?
        0x0020:  5010 ffff 389d 0000 0000 0000 0000       P...8.........
08:46:39.028975 IP 192.168.19.1.www-dev > 192.168.19.128.https: P 1:177(176) ack 1 win 65535
        0x0000:  4500 00d8 ac7b 4000 8006 a5d2 c0a8 1301  E....{@.........
        0x0010:  c0a8 1380 0ae0 01bb 90d7 03d5 d4de 593f  ..............Y?
        0x0020:  5018 ffff 303b 0000 1603 0100 ab01 0000  P...0;..........
        0x0030:  a703 014f eb1c eb53 4a6e 4277 ab86 9957  ...O...SJnBw...W
        0x0040:  4c7b bb8d 00e1 7161 cfb3 b6a9 43c3 7d33  L{....qa....C.}3
        0x0050:  c4ee 2120 3d21 ec19 42ef 95bd f572 c886  ..!.=!..B....r..
        0x0060:  de08 63d6 a927 58ab 0008 4e66 8434 53a0  ..c..'X...Nf.4S.
        0x0070:  f443 2742 0048 00ff c00a c014 0088 0087  .C'B.H..........
        0x0080:  0039 0038 c00f c005 0084 0035 c007 c009  .9.8.......5....
        0x0090:  c011 c013 0045 0044 0033 0032 c00c c00e  .....E.D.3.2....
        0x00a0:  c002 c004 0096 0041 0004 0005 002f c008  .......A...../..
        0x00b0:  c012 0016 0013 c00d c003 feff 000a 0100  ................
        0x00c0:  0016 000a 0008 0006 0017 0018 0019 000b  ................
        0x00d0:  0002 0100 0023 0000                      .....#..

08:46:39.029142 IP 192.168.19.128.https > 192.168.19.1.www-dev: . ack 177 win 6432
        0x0000:  4500 0028 6daf 4000 4006 254f c0a8 1380  E..(m.@.@.%O....
        0x0010:  c0a8 1301 01bb 0ae0 d4de 593f 90d7 0485  ..........Y?....
        0x0020:  5010 1920 1ecd 0000                      P.......
08:46:39.031623 IP 192.168.19.128.https > 192.168.19.1.www-dev: P 1:146(145) ack 177 win 6432
        0x0000:  4500 00b9 6db0 4000 4006 24bd c0a8 1380  E...m.@.@.$.....
        0x0010:  c0a8 1301 01bb 0ae0 d4de 593f 90d7 0485  ..........Y?....
        0x0020:  5018 1920 39bc 0000 1603 0100 5102 0000  P...9.......Q...
        0x0030:  4d03 014f eb9b 5f4b 2550 760c 6725 8b82  M..O.._K%Pv.g%..
        0x0040:  cf5d d92a e5a6 1105 0435 8446 115a 3036  .].*.....5.F.Z06
        0x0050:  204d cd20 3d21 ec19 42ef 95bd f572 c886  .M..=!..B....r..
        0x0060:  de08 63d6 a927 58ab 0008 4e66 8434 53a0  ..c..'X...Nf.4S.
        0x0070:  f443 2742 0039 0000 05ff 0100 0100 1403  .C'B.9..........
        0x0080:  0100 0101 1603 0100 3081 f716 4f18 e674  ........0...O..t
        0x0090:  0d48 e167 a8a6 785d 1bdc 6957 4fd6 bb85  .H.g..x]..iWO...
        0x00a0:  949a 66a2 0551 97d7 55e4 fa81 8172 a593  ..f..Q..U....r..
        0x00b0:  f276 de85 03c5 36ec 6b                   .v....6.k

08:46:39.033217 IP 192.168.19.1.www-dev > 192.168.19.128.https: P 177:646(469) ack 146 win 65390
        0x0000:  4500 01fd ac7c 4000 8006 a4ac c0a8 1301  E....|@.........
        0x0010:  c0a8 1380 0ae0 01bb 90d7 0485 d4de 59d0  ..............Y.
        0x0020:  5018 ff6e 7b92 0000 1403 0100 0101 1603  P..n{...........
        0x0030:  0100 306b dae2 f4b9 54f1 04ae 7445 6087  ..0k....T...tE`.
        0x0040:  cddb 811e 77eb 7c32 152a a651 caae b502  ....w.|2.*.Q....
        0x0050:  d87b 06e2 d584 5885 be71 b6f8 2aee 6141  .{....X..q..*.aA
        0x0060:  fa90 7517 0301 0020 f7de 7989 f054 217e  ..u.......y..T!~
        0x0070:  9243 e521 7f14 b80f c894 f845 408e 7636  .C.!.......E@.v6
        0x0080:  0dea 62c2 92e7 b7ce 1703 0101 70b0 ea0f  ..b.........p...
        0x0090:  01ed b311 29ab b97d c20c be3c db1d 4b65  ....)..}...<..Ke
        0x00a0:  924f 4092 41cd 7b85 a42b 2426 0ce3 35ca  .O@.A.{..+$&..5.
        0x00b0:  d9de 642d 92bd 0a05 130c c0e8 e6b6 a8d3  ..d-............
        0x00c0:  8f9e 92f7 3569 61d0 77cd a507 aa97 3d95  ....5ia.w.....=.
        0x00d0:  c366 a607 8623 02be cb8b 5685 fca5 75ce  .f...#....V...u.
        0x00e0:  165d 198e 7177 f9c3 6b02 4714 22cd 9ca4  .]..qw..k.G."...
        0x00f0:  16a9 4093 aaa4 babb 80e5 d4f7 3355 29aa  ..@.........3U).
        0x0100:  55db d7b6 7bd9 6237 909b ed79 6e07 4c1a  U...{.b7...yn.L.
        0x0110:  dd9d 9d88 a26a b245 c632 50b8 4229 84e1  .....j.E.2P.B)..
        0x0120:  74bd 71ea 8b1a 97ec c736 fd9e a184 b3ce  t.q......6......
        0x0130:  da41 e3f4 7c28 b23a 0c69 f9ff 815a bba8  .A..|(.:.i...Z..
        0x0140:  a2b1 7271 9189 7d65 2a74 9de7 e61b 192a  ..rq..}e*t.....*
        0x0150:  c92d a157 6894 1196 d0a6 f3c5 fea8 6242  .-.Wh.........bB
        0x0160:  60d6 de61 06b8 13c1 8f6b 1089 0eb6 7c38  `..a.....k....|8
        0x0170:  7f1f af97 bad3 eb25 1b87 b1b2 6255 8bfa  .......%....bU..
        0x0180:  0798 e318 a331 45b8 66c4 3f1d a9f2 ccb5  .....1E.f.?.....
        0x0190:  a9a9 51a7 a6df 4bd3 77f9 1c43 09a0 f7ca  ..Q...K.w..C....
        0x01a0:  3a33 f9b1 7050 2ce2 7bee 097d bd91 af2f  :3..pP,.{..}.../
        0x01b0:  249d f6f2 1043 60b3 f74e ddb7 0774 b23c  $....C`..N...t.<
        0x01c0:  3fa8 0b39 3db3 1c75 679d 4af7 48e7 66f8  ?..9=..ug.J.H.f.
        0x01d0:  d4ab f729 b2c3 21cd d74e 3a23 37da d74f  ...)..!..N:#7..O
        0x01e0:  edb7 b4f4 63c6 e650 1718 d437 7e69 4854  ....c..P...7~iHT
        0x01f0:  8e4b 2c68 ae90 e077 5d73 c039 3c         .K,h...w]s.9<

08:46:39.034315 IP 192.168.19.128.https > 192.168.19.1.www-dev: P 146:492(346) ack 646 win 7504
        0x0000:  4500 0182 6db1 4000 4006 23f3 c0a8 1380  E...m.@.@.#.....
        0x0010:  c0a8 1301 01bb 0ae0 d4de 59d0 90d7 065a  ..........Y....Z
        0x0020:  5018 1d50 8a2b 0000 1703 0101 20b8 a90c  P..P.+..........
        0x0030:  377a 7a56 4700 fa9c c641 ca3c 673a 26d9  7zzVG....A.<g:&.
        0x0040:  dcb0 0af5 8d27 0f00 f361 efc3 cdcb a5b2  .....'...a......
        0x0050:  bcb7 4ef3 a8d4 f743 d14f 1183 495a 42b3  ..N....C.O..IZB.
        0x0060:  88b2 24d7 81ed 3095 2532 d94a e428 2161  ..$...0.%2.J.(!a
        0x0070:  688e ee31 b26b 18a8 2925 ca5d 499b 41e5  h..1.k..)%.]I.A.
        0x0080:  3133 cc60 ce70 0589 0d5a e961 3047 7d06  13.`.p...Z.a0G}.
        0x0090:  4093 a22e 9869 edaf 823e 5764 22fa 37e9  @....i...>Wd".7.
        0x00a0:  49fc 4676 93d7 1c3f cac1 7c31 784d 9f0e  I.Fv...?..|1xM..
        0x00b0:  240a 8073 e8d2 7cb7 9046 fd25 41cb 08b7  $..s..|..F.%A...
        0x00c0:  12de fbf2 afe8 8825 ac86 1ab8 58af 2a01  .......%....X.*.
        0x00d0:  2d7c bde2 c6f9 3e94 88dd ead7 6234 94d1  -|....>.....b4..
        0x00e0:  1525 c9eb 65e7 1e95 7228 5474 d795 91de  .%..e...r(Tt....
        0x00f0:  f60e 1096 3d8d 28e6 584a f9f0 3b3a edbc  ....=.(.XJ..;:..
        0x0100:  3353 2721 6b29 dbf0 8b16 bc36 c386 9c24  3S'!k).....6...$
        0x0110:  0cc1 c2d8 55b3 a5b4 402c 5703 c23d 631a  ....U...@,W..=c.
        0x0120:  0384 fdb3 0fca e7f2 3d04 b8d3 fb6d 1e42  ........=....m.B
        0x0130:  6021 86b0 b308 ed5e ef70 3051 01fe 54f7  `!.....^.p0Q..T.
        0x0140:  a975 be38 34e1 35eb 62b6 3763 f217 0301  .u.84.5.b.7c....
        0x0150:  0030 b552 8610 308c 3fd9 3e0e e5e8 a385  .0.R..0.?.>.....
        0x0160:  0fe2 803e 99b2 adc0 8063 21c8 7eb7 9e32  ...>.....c!.~..2
        0x0170:  b9d1 23fd fb16 0e31 a196 ec4c 263c e5cb  ..#....1...L&<..
        0x0180:  df68                                     .h
08:46:39.034625 IP 192.168.19.128.https > 192.168.19.1.www-dev: P 492:529(37) ack 646 win 7504
        0x0000:  4500 004d 6db2 4000 4006 2527 c0a8 1380  E..Mm.@.@.%'....
        0x0010:  c0a8 1301 01bb 0ae0 d4de 5b2a 90d7 065a  ..........[*...Z
        0x0020:  5018 1d50 73da 0000 1503 0100 20b8 cc22  P..Ps.........."
        0x0030:  514e f925 a22a 3f74 7df4 61fc 8a50 0660  QN.%.*?t}.a..P.`
        0x0040:  8b20 0d2f 7d1b 3e66 15da 3997 60         .../}.>f..9.`

08:46:39.079964 IP 192.168.19.1.www-dev > 192.168.19.128.https: . ack 529 win 65007
        0x0000:  4500 0028 ac7d 4000 8006 a680 c0a8 1301  E..(.}@.........
        0x0010:  c0a8 1380 0ae0 01bb 90d7 065a d4de 5b4f  ...........Z..[O
        0x0020:  5010 fdef 3618 0000 0000 0000 0000       P...6.........
08:46:39.079967 IP 192.168.19.1.www-dev > 192.168.19.128.https: P 646:683(37) ack 529 win 65007
        0x0000:  4500 004d ac7f 4000 8006 a659 c0a8 1301  E..M..@....Y....
        0x0010:  c0a8 1380 0ae0 01bb 90d7 065a d4de 5b4f  ...........Z..[O
        0x0020:  5018 fdef 1131 0000 1503 0100 200c b035  P....1.........5
        0x0030:  3baf ddbf 0d02 f109 55c3 3433 e06f ffda  ;.......U.43.o..
        0x0040:  e887 1dfb ac2e c116 1215 2edb 08         .............
08:46:39.079973 IP 192.168.19.1.www-dev > 192.168.19.128.https: R 683:683(0) ack 529 win 0
        0x0000:  4500 0028 ac80 4000 8006 a67d c0a8 1301  E..(..@....}....
        0x0010:  c0a8 1380 0ae0 01bb 90d7 067f d4de 5b4f  ..............[O
        0x0020:  5014 0000 33df 0000 0000 0000 0000       P...3.........

08:46:39.080244 IP 192.168.19.128.https > 192.168.19.1.www-dev: R 529:529(0) ack 683 win 7504
        0x0000:  4500 0028 6db3 4000 4006 254b c0a8 1380  E..(m.@.@.%K....
        0x0010:  c0a8 1301 01bb 0ae0 d4de 5b4f 90d7 067f  ..........[O....
        0x0020:  5014 1d50 168f 0000                      P..P....


HTTPの時のキャプチャ結果とは異なる,という点がわかるだろうか?

パケットの内容を見ても,ブラウザのユーザエージェント情報はもちろん,Webページの「This is secret information.」という文言も読めない。


途中の経路では情報が暗号化されているので,通信を盗み見ても中身が分からないのだ。

情報が漏れないので,盗み見た事にならない。


これが,HTTPS(SSL)通信の強さである。


結び

実際にパケットの中味を見ることによって

  • 暗号化されていない通信がどれほど危険か
  • 暗号化された通信がどれほど安全か

身をもって実感する事ができただろう。


作る場合にも,使う場合にも,
Web周りのシステムは,適切なシーンで暗号化が施されているかどうか確認する事が大事だ。