SSLにおける各バージョンについて説明します。
ネットスケープコミュニケーションズ社がSSLの最初のバージョンとして設計していたが、設計レビューの段階でプロトコル自体に大きな脆弱性が発見され、破棄された。
このため、SSL1.0実装した製品はありません。
ネットスケープコミュニケーションズ社はSSL1.0の問題を修正して再設計し、1994年にSSL2.0として発表しました。
また、同社のウェブブラウザであるNetscape Navigator1.1においてSSL2.0を実装しました。
その後、SSL2.0にもいくつかの脆弱性が発見され、SSL3.0において修正されました。
SSL2.0の脆弱性のひとつは、ネゴシエーションの情報を改竄すると、提示する選択肢のうち最弱のアルゴリズムを使わせることができ(ダウングレード攻撃)、改竄を受けたことを検出できないというものである。
さらに悪いことに、この脆弱性を利用すると、双方がSSL3.0をサポートしていてもSSL2.0で接続させることさえ可能になります。
SSL3.0ではSSL2.0との互換性を提供するにあたり、乱数領域を使った細工を加えることで、このような攻撃を検出する仕組みを組み込みました。
しかし一部の製品においてこの細工の実装に問題があったため、結局のところ無視されていることが多いです。
SSL3.0以降に対応した実装が十分に普及したものとして、Internet Explorer 7やMozilla Firefox2、Opera9などは、初期状態でSSL2.0を無効にしています。
この決定を受け、SSL2.0しか対応していなかったサーバでも、SSL3.0以降へ対応する動きが広まっています。
SSL2.0にはチェーン証明書がありません。
したがって、ルートCAから発行したSSLサーバ証明書しか使うことができません。