初めて書き込みさせていただきます。にぼんと申します。
本日どうしても自分の力だけでは解決できない問題に直面しましたので
お力をお借りしたいと思い書き込みました。
apache2にてSSLを使用したいと思い、
下記のバージョンでインストールしました。
apache:2.0.58(自分でコンパイルしてインストール)
mod_ssl:2.0.58(apache2に組み込まれていた)
OpenSSL:0.9.7e(apt-getによりバイナリインストール)
インストールは完了し、IE6.0による通信ができることを確認しました。
https://localhost:443
しかし、次にIEの「オプション」→「詳細設定」で
「SSL2.0を使用する」のチェックを外したところ、
アクセスができなくなりました。
apache2のsslのログを見ても、SSLv2でアクセスしており、
SSLv2を使用しなくなったためにアクセスできなくなったみたいです。
上記のソフトのバージョンであれば、
SSLv3に対応していると思うので
SSLv3でアクセスしてほしいのですが、
SSLv3でのアクセスがエラーとなります。
openssl s_client -ssl3 -connect localhost:443 -state -debug
こんな感じでアクセスしましたがエラーとなりました。
(-ssl2にした場合はエラーとならず成功しました)
CONNECTED(00000003)
SSL_connect:before/connect initialization
write to 0047E360 [004886D8] (100 bytes => 100 (0x64))
0000 - 16 03 00 00 5f 01 00 00-5b 03 00 44 65 ee 8a 49 ...._...[..De..I
0010 - 5c d1 cc 32 dc ee fe 8b-cc 2b 3b c0 c6 e6 5a 87 \..2.....+;...Z.
0020 - bd 8b 3e 50 8c 2f 2b 1d-b4 a9 b9 00 00 34 00 39 ..>P./+......4.9
0030 - 00 38 00 35 00 16 00 13-00 0a 00 33 00 32 00 2f .8.5.......3.2./
0040 - 00 66 00 05 00 04 00 63-00 62 00 61 00 15 00 12 .f.....c.b.a....
0050 - 00 09 00 65 00 64 00 60-00 14 00 11 00 08 00 06 ...e.d.`........
0060 - 00 03 01 ...
0064 - <SPACES/NULS>
SSL_connect:SSLv3 write client hello A
read from 0047E360 [00483EC8] (5 bytes => 5 (0x5))
0000 - 15 03 00 00 02 .....
read from 0047E360 [00483ECD] (2 bytes => 2 (0x2))
0000 - 02 28 .(
SSL3 alert read:fatal:handshake failure
SSL_connect:failed in SSLv3 read server hello A
18441:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1052:SSL alert number 40
18441:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:529:
一体何が原因なのか検討がつきません。
お力を貸していただけると幸いです。
> apache2にてSSLを使用したいと思い、
> 下記のバージョンでインストールしました。
>
> apache:2.0.58(自分でコンパイルしてインストール)
> mod_ssl:2.0.58(apache2に組み込まれていた)
> OpenSSL:0.9.7e(apt-getによりバイナリインストール)
>
> インストールは完了し、IE6.0による通信ができることを確認しました。
> https://localhost:443
> しかし、次にIEの「オプション」→「詳細設定」で
> 「SSL2.0を使用する」のチェックを外したところ、
> アクセスができなくなりました。
> apache2のsslのログを見ても、SSLv2でアクセスしており、
> SSLv2を使用しなくなったためにアクセスできなくなったみたいです。
>
> 上記のソフトのバージョンであれば、
> SSLv3に対応していると思うので
> SSLv3でアクセスしてほしいのですが、
> SSLv3でのアクセスがエラーとなります。
>
> openssl s_client -ssl3 -connect localhost:443 -state -debug
> こんな感じでアクセスしましたがエラーとなりました。
> (-ssl2にした場合はエラーとならず成功しました)
>
> CONNECTED(00000003)
> SSL_connect:before/connect initialization
> write to 0047E360 [004886D8] (100 bytes => 100 (0x64))
> 0000 - 16 03 00 00 5f 01 00 00-5b 03 00 44 65 ee 8a 49 ...._...[..De..I
> 0010 - 5c d1 cc 32 dc ee fe 8b-cc 2b 3b c0 c6 e6 5a 87 \..2.....+;...Z.
> 0020 - bd 8b 3e 50 8c 2f 2b 1d-b4 a9 b9 00 00 34 00 39 ..>P./+......4.9
> 0030 - 00 38 00 35 00 16 00 13-00 0a 00 33 00 32 00 2f .8.5.......3.2./
> 0040 - 00 66 00 05 00 04 00 63-00 62 00 61 00 15 00 12 .f.....c.b.a....
> 0050 - 00 09 00 65 00 64 00 60-00 14 00 11 00 08 00 06 ...e.d.`........
> 0060 - 00 03 01 ...
> 0064 - <SPACES/NULS>
> SSL_connect:SSLv3 write client hello A
> read from 0047E360 [00483EC8] (5 bytes => 5 (0x5))
> 0000 - 15 03 00 00 02 .....
ここがおかしいですね。ここは、クライアントからのHello部分ですが、上と見比べるとわかりますが
最初のところがsslv3のハンドシェークなら「16」ですが、「15」なのでalertを意味してます。
その後ろの「03 00」がv3をあらわしているところ。その後の「00 02」が、cipher等の付加情報の長さ
でこれがalertなので2Byteになっています。普通は、上のように「00 5f」=95等になっています。
(これはフラグメントされていないので、その前の5Byteを含めて100Byteになっています。)
上記で2Byteといっているので、下では2Byteは送られていますが、これでは動くとは思いません。
因みに、下記の先頭の「02」はfatalという致命的なエラーを意味するものだと思います。後ろの「28」
はなんだかわかりません。
このログは、opensslでやっている話なので、opensslがおかしい気がします。
デストりと整合性は取れているのですか? もしくは、壊れているので入れなおすか?
> read from 0047E360 [00483ECD] (2 bytes => 2 (0x2))
> 0000 - 02 28 .(
> SSL3 alert read:fatal:handshake failure
> SSL_connect:failed in SSLv3 read server hello A
> 18441:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1052:SSL alert number 40
> 18441:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:529:
おやじのSuSEの例を載せます。CentOSでも同じです。
# openssl s_client -ssl3 -connect localhost:443 -state -debug
CONNECTED(00000003)
SSL_connect:before/connect initialization
write to 080AC560 [080B6AA0] (100 bytes => 100 (0x64))
0000 - 16 03 00 00 5f 01 00 00-5b 03 00 44 66 6c a0 b4 ...._...[..Dfl..
(snip)
0060 - 00 03 01 ...
0064 - <SPACES/NULS>
SSL_connect:SSLv3 write client hello A
read from 080AC560 [080B2290] (5 bytes => 5 (0x5))
0000 - 16 03 00 00 4a ....J
read from 080AC560 [080B2295] (74 bytes => 74 (0x4A))
0000 - 02 00 00 46 03 00 44 66-6c a0 aa 14 b2 93 69 db ...F..Dfl.....i.
(snip)
0040 - 43 71 88 91 98 3d f6 00-39 Cq...=..9
004a - <SPACES/NULS>
SSL_connect:SSLv3 read server hello A
read from 080AC560 [080B2290] (5 bytes => 5 (0x5))
0000 - 16 03 00 02 a8 .....
read from 080AC560 [080B2295] (680 bytes => 680 (0x2A8))
0000 - 0b 00 02 a4 00 02 a1 00-02 9e 30 82 02 9a 30 82 ..........0...0.
(snip)
02a0 - ae c9 65 4f 46 86 22 62- ..eOF."b
:
:
> このログは、opensslでやっている話なので、opensslがおかしい気がします。
> デストりと整合性は取れているのですか? もしくは、壊れているので入れなおすか?
迅速なご指摘ありがとうございます。
opensslについてはapt-getによるバイナリイメージでの
インストールであり確かに妖しいところがあったので、
ソースから入れなおすことにしました。
OpenSSL/0.9.7j をインストールし、
再度opensslで確認コマンドを入力しました。
(ログ結果を載せるので長文になってしまい申し訳ありません)
openssl s_client -ssl3 -connect localhost:443
<結果>
SSL_connect:before/connect initialization
SSL_connect:SSLv3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=0 /C=JP/CN=sight/emailAddress=sight@mail
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /C=JP/CN=sight/emailAddress=sight@mail
verify error:num=27:certificate not trusted
verify return:1
depth=0 /C=JP/CN=sight/emailAddress=sight@mail
verify error:num=21:unable to verify the first certificate
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL3 alert read:fatal:bad record mac
SSL_connect:failed in SSLv3 read finished A
15320:error:140943FC:SSL routines:SSL3_READ_BYTES:sslv3 alert bad record mac:s3_
pkt.c:1052:SSL alert number 20
15320:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.
c:529:
<デバッグ>
CONNECTED(00000003)
write to 0054B7B8 [00555B18] (102 bytes => 102 (0x66))
0066 - <SPACES/NULS>
read from 0054B7B8 [00551308] (5 bytes => 5 (0x5))
0000 - 16 03 00 00 4a ....J
read from 0054B7B8 [0055130D] (74 bytes => 74 (0x4A))
004a - <SPACES/NULS>
read from 0054B7B8 [00551308] (5 bytes => 5 (0x5))
0000 - 16 03 00 02 1f .....
read from 0054B7B8 [0055130D] (543 bytes => 543 (0x21F))
read from 0054B7B8 [00551308] (5 bytes => 5 (0x5))
0000 - 16 03 00 01 8d .....
read from 0054B7B8 [0055130D] (397 bytes => 397 (0x18D))
read from 0054B7B8 [00551308] (5 bytes => 5 (0x5))
0000 - 16 03 00 00 04 .....
read from 0054B7B8 [0055130D] (4 bytes => 4 (0x4))
0000 - 0e .
0004 - <SPACES/NULS>
write to 0054B7B8 [0055B430] (139 bytes => 139 (0x8B))
write to 0054B7B8 [0055B430] (6 bytes => 6 (0x6))
0000 - 14 03 00 00 01 01 ......
write to 0054B7B8 [0055B430] (69 bytes => 69 (0x45))
read from 0054B7B8 [00551308] (5 bytes => 5 (0x5))
0000 - 15 03 00 00 02 .....
read from 0054B7B8 [0055130D] (2 bytes => 2 (0x2))
0000 - 02 14
webサーバの方は、SSLv2でもSSLv3でも
アクセスできなくなってしまいました。
自己レスです。
http://www.bnote.net/kuro_box/self_ca.html
上記サイトのとおりに設定を行ったところ、
IEでの接続はSSLv2、SSLv3、TLS1.0共に可能となりました。
しかし、FirefoxにてSSLv3のみを使用する設定にして
接続しようとしたところ、
「サイト名は不正なメッセージ認証コードをもつ
メッセージを受け取りました。このエラーが繰り返される場合は
webサイトの管理者に問い合わせてください。」
というエラーが発生し、アクセスができませんでした。
opensslによる結果はNo.5959 と同じで、
やはり不正なMACが返ってくるようです。
…何が原因なのでしょうか…?
頼りっきりで申し訳ありませんがお力を貸していただけると幸いです。
> しかし、FirefoxにてSSLv3のみを使用する設定にして
> 接続しようとしたところ、
> 「サイト名は不正なメッセージ認証コードをもつ
> メッセージを受け取りました。このエラーが繰り返される場合は
> webサイトの管理者に問い合わせてください。」
> というエラーが発生し、アクセスができませんでした。
>
> opensslによる結果はNo.5959 と同じで、
> やはり不正なMACが返ってくるようです。
> …何が原因なのでしょうか…?
少なくとも、おやじは下記でやっていて何も問題ないですね。
http://www.aconus.com/~oyaji/www/certs_linux.htm
CA作るときに事前準備をチャントしてますか? Gekko系はこのあたりがしっかりしていないと駄目だった記憶があるのですが・・・。
MACうんうんはググルと少し情報があるようですが、少なくともデストリが何か知りませんが標準でうまくいかないところからして、おかしくなっているような気がするのですが・・・
業務都合によりなかなか帰ることができず
お返事が遅くなってしまいました。
申し訳ありませんでした。
> 少なくとも、おやじは下記でやっていて何も問題ないですね。
>
> http://www.aconus.com/~oyaji/www/certs_linux.htm
>
> CA作るときに事前準備をチャントしてますか? Gekko系はこのあたりがしっかりしていないと駄目だった記憶があるのですが・・・。
> MACうんうんはググルと少し情報があるようですが、少なくともデストリが何か知りませんが標準でうまくいかないところからして、おかしくな
っているような気がするのですが・・・
CAを作る時の事前準備、というのは一体何でしょうか…?
openssl.conf等の設定のことであれば
ディレクトリの設定は行いました。
ディストリビューションの記述をすっかり失念していました…
LANDISKにdebianをインストールして使用している環境です。
> > 少なくとも、おやじは下記でやっていて何も問題ないですね。
> >
> > http://www.aconus.com/~oyaji/www/certs_linux.htm
> >
> > CA作るときに事前準備をチャントしてますか? Gekko系はこのあたりがしっかりしていないと駄目だった記憶があるのですが・・・。
> > MACうんうんはググルと少し情報があるようですが、少なくともデストリが何か知りませんが標準でうまくいかないところからして、おかしくな
> っているような気がするのですが・・・
>
> CAを作る時の事前準備、というのは一体何でしょうか…?
> openssl.conf等の設定のことであれば
> ディレクトリの設定は行いました。
ディレクトリは後で必要なところへコピーして使えばいいので、あえて変更する理由はあまりありません。
それより問題は、上記URLの「nsxxxxx」という設定です。
この「nsxxxxx」のnsはnetscapeの意味でmozillaのそうですが、gekko系はチャント設定しないとエラーがでます。
証明書の発行方法をかなり見直しました。
http://www.aconus.com/~oyaji/www/certs_linux.htm
> 証明書の発行方法をかなり見直しました。
>
> http://www.aconus.com/~oyaji/www/certs_linux.htm
非常に親身に相談に乗ってくださっているのに、
質問者の私のレスポンスが遅くて申し訳ありません…
http://www.bnote.net/kuro_box/self_ca.html
下記サイトの方法に従って設定を行った時は、
CA.shを使用していました。
その際、CAとサーバのONをいっしょにしなければ
エラーとなって証明書を発行できませんでした。
おやじ様の説明ページでは逆に
「ONをCAとサーバとでいっしょにしないこと」
となっているため食い違いがあり、
この辺に何か問題があるのかな?と考えております。
とりあえず見直し後の説明に従ってトライしてみます。
成功にせよ失敗にせよ、質問しっぱなしで放置はせず
結果とお礼をご報告させていただきます。
もう少しだけお付き合いください。
それでは。