JSSE(Java Secure Socket Extension)を使いSSL通信する - SSL通信の仕組み
外部システム連携でSSL通信をすることになりました。
Javaを使っているので、JSSE(Java Secure Socket Extension)
というものを使うみたい。
JSSEよりもまずSSLについてほぼわかっていなかったので、
簡単に調べてみます。
・SSL(Secure Sockets Layer)とは
インターネットでデータを暗号化して送受信するプロトコルの一つで、データを送受信する一対の機器間で通信を暗号化し、中継装置などネットワーク上の他の機器による成りすましやデータの盗み見、改竄などを防ぐことができる
SSLとは 【 Secure Sockets Layer 】 - 意味/解説/説明/定義 : IT用語辞典
送受信するデータを暗号化することで様々な不正を防ぐということですね。
不正には
・中継機器の成りすまし
・データの盗み見、改竄
があるようです。
次にこれを防ぐための技術を見てみます。
SSLは公開鍵証明書による通信相手の認証(一般的にはサーバの認証)と、共通鍵暗号(秘密鍵暗号)による通信の暗号化、ハッシュ関数による改竄検知などの機能を提供する。
SSLとは 【 Secure Sockets Layer 】 - 意味/解説/説明/定義 : IT用語辞典
公開鍵証明書、共通鍵暗号という語句が出てきたので、
もう少しだけ調べてみます。
こちらの記事を参考にすると
公開鍵暗号について理解が足りていなかったのでメモ - かせいさんとこ
・共通鍵暗号方式と公開鍵暗号方式
前者が送信者と受信者が共通の秘密鍵を持って暗号化と複合を行う方式で
後者が公開鍵と秘密鍵の2つを持って暗号化には公開鍵を使い、復号には秘密鍵を使う方式
・公開鍵証明書
公開鍵の所有者を信頼出来る第三者機関(認証局)が審査して、
発行される証明書が公開鍵証明書
SSL通信は、
1. Aは公開鍵証明書をBから受けとる
2. Aは公開鍵証明書から公開鍵を取得し、
それを使って乱数を暗号化してBに送る
3. Bは乱数を元にした共通鍵を作ってAに送る
4. 共通鍵で通信する
今回使うJSEEでは、
キーストア、トラストストアという2つの証明書ストア(保存場所)
を用意してSSL通信を行うみたい。
キーストア、トラストストアについては次回に。