【プログラミング初心者】httpとhttpsの違いについて。SSLについて学ぼう。

プログラミング

httpsとhttpって何が違うんだろう?
よく耳にするけど違いがよく分からない。

 

 

WEBアプリケーションの開発を行う場合、クライアントとサーバとのやり取りとしてHTTPを使用します。
それ以外にも基本的にgoogleで検索してホームページなどを見る際もHTTPを使用しているかと思います。

 

ブラウザのURLの欄を見て頂くと「https:~」と記載されているかと思います。
このhttpというのがHTTPを使用した通信を行いますよってことになります。

 

HTTPとは「Hypertext Transfer Protocol」の略でWEBページなどの通信プロトコルのことを指します。

プロトコルというのは、決まり事と思って頂けたらいいです。お互い通信するためには決まり事を守ってやりとりを行うイメージです。

 

HTTPの詳しい説明は以下のウィキペディアを参照頂けたらと思います。

https://ja.wikipedia.org/wiki/Hypertext_Transfer_Protocol

 

完璧に覚える必要はないです。
クライアントとサーバ間で通信を行うためのルールの1つというぐらいで今は覚えて頂けたら良いと思います。

 

本記事はこのhttpの暗号化について記載していきます。

httpsとhttpの違いについて

最近ではhttpを見かけることも少なくなってきましたが、httpとhttpsというものがあります。

 

httpとhttpsの違いは暗号化されているかされていないかになります。

この s が付いているかついていないかで通信の安全性が変わります。

 

HTTPSは「Hypertext Transfer Protocol Secureの略になります。

以下、ウィキペディアのリンクです。
https://www.kagoya.jp/howto/rentalserver/ssl/

 

SSL/TLSプロトコルによってセキュアな通信を行います。

 

SSLについて

SSL/TLSプロトコルのことをよくSSLと呼んだりします。

 

どのように暗号化してセキュアな通信しているかについては以下のサイトが分かりやすく解説していますのでご覧ください

https://www.kagoya.jp/howto/rentalserver/ssl/

 

内容的に少し複雑なので、だいたいこういうことしているんだなーぐらいで問題ないです。

もし、詳しく知る必要があったときにちゃんと勉強すればいいかと思います。

 

初心者でも分かりやすいように簡単に説明したいと思います。

 

まず、SSLの通信でないものはどういったものか例え話で説明します。

 

郵便で例えると以下のイメージです。

http(SSLでない通信):はがき
https(SSLの通信):鍵付きの封筒

はがきは中身が見えてしまいますが、封筒は中身が見えません。
SSLの暗号化によって中身を見えないようにしている感じです。

 

クライアントとサーバとでお互いに暗号化する鍵と複合化する鍵をやり取りして通信の内容をみえないようにします。

 

これにより悪意のある人に通信を除かれても中身が見れないようになります。

後、SSLを行う上で必要になってくるのがサーバ証明書というものがあります。
クライアントとサーバとやり取りする鍵の信用性を保証するためのものになります。

 

例えばサーバからこの鍵で暗号化してねといわれて渡されてた鍵がよく分からない鍵だとしたらどうでしょうか?
いわゆるなりすますことができてしまいます。

 

これらを防ぐためにこの鍵はちゃんと信頼性のあるものですと証明書で保障されていることを確認する必要があります。

 

だいたいのブラウザは信頼されていない証明書の場合は警告が表示されるようになっています。
もし、WEBページでこのような表示がされた場合は注意してください。

 

ちなみにこの証明書がちゃんと信頼におけるものかは、CAと呼ばれる認証局がありここからサーバ証明書を発行してもらいます。

 

それなりにお金が掛かりますが、CAによって著名されることになりますのでブラウザで開いた際に警告が出たりしなくなります。

 

最後に

会員登録など、クレジットカード情報の登録といったものには必ずSSLが行われております。

SSLによってセキュアな通信を行うことによって、漏れては困る情報が守られていることになります。

 

WEBアプリケーションの開発において、業務的な情報だと漏れては困ることが多いためほぼ確実にこのSSLの対応が必須になってきます。

 

完全に閉じたネットワークで内部のシステムであれば、SSLにする必要はないかもしれませんが、これからWEBアプリケーションで案件を取っていきたい方は知識として知っておくといいでしょう。

 

暗号化の方法については、この記事では詳しく記載しませんでしたが上記で張ったリンクが分かりやすいので是非読んでみてください。

 

ちなみにこのSSLはHTTPだけでなく色々なところで使用されています。
例えばファイル転送プロトコルのFTPだったり、メール送信プロトコルのSMTPとかです。

 

なので、完璧に理解しなくてもいいですが、SSLでセキュアな通信を実現しているんだと知っておくと今後のためになるかとおもいます。

 

コメント

タイトルとURLをコピーしました