それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

OpenSSLで作ったオレオレ証明書を使ったHTTPS通信をのぞいてみる。

このエントリがおもしろそうだったのでOSX でやってみた。

実際にやったこと。

  1. openssl の自己証明を使って、HTTPSの実験サーバーを作る。
  2. HTTPSの通信の中身をのぞいてみまみる

Apache+mod_sslを openssl で用意しました。

オレオレ証明書を使ってHTTPSサーバーを作った

今回はOSX の組み込みApacheの設定変更で対応することにする。

本来、cert (certification)は、認証局に署名して貰うのだが、今回は自分で自分を証明する。オレオレ証明書を使う

秘密鍵(server.key)の作成

openssl genrsa 2048 > server.key

公開鍵(server.csr)の作成

openssl req -new -key server.key > server.csr

デジタル証明書(server.crt)の作成

openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt

実験用なのでパスフレーズは省略しておいた。

10年分

有効期限を十年にする場合は、-days をもっと長く採る

-days 3600 

できあがったファイルは次のようなもの。

takuya@rena:~/Desktop/ssl$ ls -l
total 16
-rw-r--r--+ 1 takuya staff 1111  4 14 16:34 server.crt
-rw-r--r--+ 1 takuya staff  956  4 14 16:33 server.csr
-rw-r--r--+ 1 takuya staff 1766  4 14 16:33 server.key

VirtualHostディレクティブに以下を記述

Apacheの設定を書き換える。

<VirtualHost _default_:443>
##中略
SSLCertificateFile    "/usr/local/etc/_ssl_keys/server.crt"
SSLCertificateKeyFile "/usr/local/etc/_ssl_keys/server.key"
</VirtualHost>

設定ファイルのシンタックステストをする。

takuya@rena:~/Desktop$ apachectl configtest
httpd: Could not reliably determine the server's fully qualified domain name, using rena.local for ServerName
Syntax OK

おっけー、じゃぁRestartするよ。

takuya@rena:~/Desktop$ apachectl restart

じゃぁ。通信してみる

curl -k  https://127.0.0.1/

tcpdumpでパケットをキャプチャする

sudo tcpdump -i lo0  -s 0 -w  packet.dump

tcpdump の -s オプションでめいっぱいログとって、-- でインタフェースを指定。こんかいは127.0.0.1にアクセするだけだからコレで十分。

あとは適当に通信してー

open  -a safari  https://127.0.0.1/

ログファイルを確認する

tcpdump -r packet.dump

パケットファイルが準備できた

Wireshark を準備する。

brew install wireshark --with-gtk+

brewで入れるとXQurartz版になるけどまぁいいさ。

パケットを読み解く

WiresharkGUI

open -> file -> packet.dup

f:id:takuya_1st:20140414194204j:plain

当然パケットは暗号化されてるので、それをつらつら確認 Protocol がTLSv1になってた。

サーバーの秘密鍵を使ってデコードする

preference -> protocol -> ssl 

で、サーバーキーリストをeditで追加する。

これでパケットのヘッダが見たら成功

見えました。よかったです。

f:id:takuya_1st:20140414194208j:plain

Blinkなブラウザたちで試したらうまくいきませんでした。WebkitSafariだと綺麗に見えました。たぶん暗号化の強度のFlagが違うんだろうけど、今日はもう疲れたのでここまで、

情報セキュリティのIPAの試験でも受けようかと思ったけど勉強してない。

参考資料とか

オレオレ証明書や、パスフレーズの証明書は危険なので本番運用しないようにしましょうね。