サーバとクライアント間の通信をHTTPS化
MR
https://gitlab.com/karasu97/ansible-httpd/-/merge_requests/15
概要
現状ではサーバとクライアント間の通信の規格がHTTPであり、通信の暗号化に対応していない状態であるため、悪意の持ったユーザから通信からパスワードや個人情報の窃取が可能である非常に危険な状態である。そのためHTTP通信に対してSSL暗号化を適用し、セキュアで安全な通信を実現する。
参考:https://www.itmanage.co.jp/column/about-http-https/
対応内容
Let's Encryptはフリーの証明書認証局である。 Challenge TypeはHTTP-01形式を活用する。Let's Encryptの証明書要求方法は二種類に大別される。HTTP-01形式に関する説明は以下に記述した。
https://letsencrypt.org/ja/docs/challenge-types/ https://docs.ansible.com/ansible/latest/collections/community/crypto/acme_certificate_module.html
HTTP-01の詳細
ユーザ(私のサイト)側がSSL証明書をリクエスト(CSR)を要求し、認証側がそのドメインに対する権限を有しているかをHTTP(80)ポートを経由して確認する方式である。
- ① ユーザ(私のサイト)側がLet's Encryptへドメインに対して証明書を要求する。
- ② Let's Encryptが後で認証しにいけるようにするための認証用トークンをユーザ(私のサイト)側へ送信。
- ③ ユーザ(私のサイト)側で認証トークンより認証ファイルを作成。
- ④ 準備完了をLet's Encryptへ送信。
- ⑤ Let's Encryptがユーザ(私のサイト)側の認証ファイルにHTTP経由でアクセスし、秘密鍵とCSRからドメインの正当性を確認。
- ⑥ Let's Encryptからユーザ(私のサイト)側へ証明書の発行
Edited by Lucifer