こんにちは。
BV6.0で、Winsockコントロールを使用し、TCPサーバを作成しています。
ヘルプを参考にし、クライアント側との接続・通信はできました。
そして、サーバとクライアント間でSSL通信を行わなくてはいけないので、
実装するのですが、どのように実装すればいいのかわからずに困っています。
どなたかご教授願います。
要するに「SSLプロトコルって何?」
という質問でしょうか?
>要するに「SSLプロトコルって何?」
>という質問でしょうか?
SSL通信については、ほとんど分からないことばかりです。
どの様にすれば、Cliant Helloメッセージを取得でき、
どの様にして、Server Helloメッセージを送信するのか、
調べてみたものの、まったく見当がつきませんでした。
SSL通信には、どのコントロールを使えばいいのでしょうか?
SSLを使った通信にWinsockコントロールは使えるでしょうか?
Winsock で出来ない事は無いだろうけど、既存のプロトコルを使った方が、
実装の手間は楽なんじゃないかなぁ。
たとえば https ベースで処理するなら、サーバ側は、IIS に電子証明書を
突っ込むだけで、あとは通常のASP/ASP.NET/VB6 IISアプリ等のコードが
そのまま利用できるし、クライアント側も、XMLHTTP とか WebBrowser 等で
そのまま通信可能だから、アプリ自体は、http/https の違いについては
一切気にせずに済むからね。
> SSL通信については、ほとんど分からないことばかりです。
どうしても、SSL通信を自力実装したいって事なら、最低限、
公開鍵/秘密鍵を生成する必要があると思われ。
SSLの大雑把な仕組み。以下、C:=Client , S:=Serverと略記。
0. Server:事前準備。自身を証明する電子証明書を作っておく。
(別途、Client側から確認可能な認証局が必要)
1. C → S:暗号化通信の開始要求を送る。(これは平文でもOK)
この時、Cが使用可能な暗号の種類をSに並送する。
2. Server:C/S両者で使える最強の共通鍵暗号を選択する。
3. C ← S:[公開鍵]をCに送り返す。この時、改竄(なりすまし)を
防止するため、電子証明書を付けておく。と同時に、
どの共通鍵暗号化方式を選択したのかも返信。
4. Client:受け取ったデータが正当なものか、電子証明書を確認する。
問題が無ければ、Sが選択した方式で新規に[共通鍵]を生成し、
Sから受け取った[公開鍵]を使って、その[共通鍵]を暗号化。
5. C → S:生成した暗号データを送信。このデータは、Sが所有する
非公開の[秘密鍵]でしか復号できないので、安全といえる。
6. Server:[公開鍵]で暗号化されているデータを、[秘密鍵]で復号し、
Cから送られてきた[共通鍵]を取り出す。
7. C / S:これ以降は、共に同一の[共通鍵]を使って通信を行う。
ツイート | ![]() |