HTTPとHTTPS

「http https 違い」とググると解説しているサイトがごまんと出てきますが自分の言葉で説明する為に書いておきます

tl;dr

httpではサーバーとブラウザの通信が暗号化されている。第三者から見える

httpsではサーバーとブラウザの通信が暗号化されている。第三者から見えない

httpsで通信するにはサーバにSSL証明書を置いておく必要がある

httpsで通信を暗号化する時、ブラウザはSSL証明書に含まれる公開鍵を使う

httpsで暗号化された通信を復号する時、サーバーはSSL証明書に含まれる秘密鍵を使う

http

httpはwebの通信プロトコル

プロトコルwikipediaによると

複数の者が対象となる事項を確実に実行するための手順について定めたもの。

プロトコル - Wikipedia

まあルールみたいなもの

ブラウザはhttpというルールにしたがってサーバーと通信を行う

通信の内容は第三者でも見ることができるので、悪意を持った第三者によって情報が漏洩したり、改ざんされたりする危険がある

https

httpsはhttp通信を拡張したもの

TLSという方法で通信を暗号化している

暗号化された通信は通信先のサーバーでしか復号 (暗号化されたものを元に戻すこと)できないので、第三者に情報を奪われたり改ざんされたりする危険がない

https通信を行うためにはサーバーがSSL証明書を持っている必要がある

SSL証明書

認証局が発行している証明書

サーバーの運営者が実在していることを証明する

ドメイン認証、企業実在認証、EV認証の 3段階にレベル分けされている

ブラウザはサーバーから証明書を受け取り、認証局により認証されていることが確認できたら証明書に含まれる公開鍵で通信を暗号化する

公開鍵

ブラウザ側が通信を暗号化するために鍵

いろいろと例えられるが南京錠という例えが個人的には1番わかりやすい

公開鍵は通信を第三者が見えないようにするためにしかつかえず、外部に漏れても問題ない

秘密鍵

公開鍵により暗号化された通信を復号するための鍵

南京錠に対する鍵の役割

これが外部にもれると暗号化された情報を盗まれたり、かいざんされたりしてしまうので、秘密にしておく必要がある

ざっくりまとめだけどここまで