ApacheをSSLに対応させ、セキュアなWebページを作成するための仕組みについて見ていきます。
SSLとは
SSLとは、インターネットなどのTCP/IPネットワークでデータを暗号化して送受信するプロトコルです。
インターネットの活用方法が広がった現在では、住所や電話番号といった個人情報、クレジットカード番号や企業秘密情報など機密性の高いデータが頻繁に扱われるようになり、データの盗聴や改ざんを防ぎ、インターネットで安全な通信をするための仕組みは必須と言えます。
その仕組みがSSL(Secure Sockets Layer)です。SSLでクライアントとサーバー間のデータを暗号化したり、認証したりすることで重要なデータを守ります。
SSL 3.0の次のバージョンから名称が「TLS」(Transport Layer Security)に変更されたため、正確にはTLSと呼びますが、SSLという名称が広く定着されたため、実際にはTLSを指していてもSSLと呼ばれることの方が多いです。「SSL/TLS」「TLS/SSL」などと両者を併記したりすることもありますが、どれも同じ意味ですので混合しないように注意してください。
SSLは次の機能から成り立ちます。
相互認証
通信相手のサーバーやクライアントが信頼できるかどうかを調べます。通信相手の証明書をCA(Cerificate Authority:認証局)を介して検証することで認証を行い、クライアントやサーバーのなりすましを防ぎ、安全な通信を確保します。インターネットショッピングなど不特定多数のクライアントがいる場合はサーバー認証のみを行ないますが、クライアントが限られる場合は、SSLでクライアントを認証することで、信頼できるクライアントのみにアクセスを許可するようにWebサーバーを設定することも可能です。
データの完全性
データの完全性とはデータが改ざんされていないこと保証することです。電子署名という技術を使い、データが通信相手から送られたものかどうか、送信されたデータがすべて届いているかどうかを確認します。
プライバシー保護
データの盗聴を防ぎます。通信内容を暗号化することで、通信の途中でデータを盗み見れないようになります。
このようにSSLを使用することで、WebサーバーとWebブラウザ(クライアント)間を安全に通信することができるようになります。逆に言うと、SSLを使わない普通のWebサイトは盗聴や改ざんされたりする危険があるということです。