JSSE – 暗号通信 Java Secure Socket Extension 3ADM3225 高橋 佑介 準備 フォルダ名 JSSE ファイルのコピー元 ~coffee/Java/JSSE2/* コマンドプロンプトとTTSSHを起動しておい てください テキスト http://www.cs.dm.utokai.ac.jp/~coffee/text-JSSE.pdf (修正版) http://www.cs.dm.utokai.ac.jp/~coffee/JSSE.ppt JSSE ネットワーク上のデータは簡単に不正アク セスできてしまう。 例 盗聴、なりすまし・・・ JSSE 不正アクセスを防止する、暗号化通信を行 うプロトコル、SSLとTLSを提供。 SSL (Secure Socket Layer) SSLは公開鍵暗号や秘密鍵暗号、デジタ ル証明書、ハッシュ関数などのセキュリテ ィ技術を組み合わせ、データの盗聴や改ざ ん、なりすましを防ぐことができる。 ハンドシェークプロトコル サーバとクライアントが通信を行う前に認 証や暗号化アルゴリズムの交渉をする。 SSLClient.java インポート SSLを使うために必要 Import javax.net.ssl.*; ソケットの作成 SSLSocketFactory fact =(SSLSocketFactory)SSLSocketFactory.getDefault(); SSLSocket s = (SSLSocket)fact.createSocket(host, port); SSLServer.java インポート Import javax.net.ssl.*; サーバソケットの作成 SSLServerSocketFactory fact = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault(); SSLServerSocket ss = (SSLServerSocket)fact.createServerSocket(port); クライアントの接続要求を待つ SSLSocket s = (SSLSocket)ss.accept(); 実習 SSLServer.javaとSSLClient.javaを実行せ よ。 SSLServer.javaのエラー 利用できる証明書が見つからなかった。 SSLは通信をする前にサーバの認証を行う ため、証明書が必要。 CA(認証局) CA クライアント サーバ CAはサーバの公開鍵に署名する。 署名 キーストア、トラストストア キーストア サーバ用 自分の証明書を保存しておくところ。 トラストストア クライアント用 信頼するサーバの証明書を保存するとこ ろ。 keytool 鍵と証明書を管理するためのユーティリティ keytoolのオプション -genkey 鍵の生成 -alias 証明書や鍵の名前 -keyalg 暗号方式 -keystore キーストア 使い方 keytool -genkey -alias self -keystore test ・・・ 動作モードの指定 オプション 最初に動作モードの指定、それより後はオプション 手順 クライアント トラストストア サーバ キーストア 1.キーストアの作成 2.キーストアから証明書をエクスポート 3.証明書をトラストストアへインポート 実習 Keytoolを用いてキーストアを作り、作った キーストアを調べよ。 作ったキーストアから証明書を取り出し、ト ラストストアにインポートせよ。 パスワードは忘れないように! 実習 テキストの例を参考にSSLServer.javaと SSLClient.javaを実行せよ。 SSLServer キーストアとキーストアのパスワードを指定する。 SSLClient トラストストアとトラストストアのパスワードを指定 する。 演習 EchoClientとEchoServerを動作させた後、SSLで セッションをはるようにコードを変更せよ。 ファイル: SSLEchoClient.java,SSLEchoClient.java EchoClientはメッセージを送信し、EchoServerは そのままメッセージを送り返している。 宿題 サーバに数値を送るクライアント SSLChallengeClient.javaと、送られた入力値が大きいか 小さいか送り返すサーバ SSLChallengeServer.javaを作 れ。 SSL化したコードにメッセージ入力機能を付け、暗号通信 チャットの出来る SSLChatClient.java、SSLChatServer.javaを作れ。 Client.javaとSSLClient.java、サーバが送ったメッセージ を表示するまでの時間を求めよ。かかった時間はコメント アウトしてプログラムの最後に書け。
© Copyright 2025 ExpyDoc