Nginx セキュリティ

[Nginx] SSL証明書でHTTPS通信をする

NginxでHTTPS通信したいとおもったので、そのまとめをしますわね

HTTPS通信とは

世の中の殆どのサイトはhttps通信になっているんじゃないでしょうか?

http通信になっているサイトで絶対に個人情報を入力しては駄目でっせ?w

間に悪いサーバが立ち入っていた場合、簡単に情報抜き取れるんでw

sがつくことで通信が暗号化されて他の人に情報を抜き取ることができなくなるのでパスワードや個人情報などは絶対にhttps通信前提

仕組み的にはSSLていう技術でブラウザとサーバ間で共通鍵というものを生成して、以降の通信をその鍵で暗号化、復号化をするっていうもんらしい 。

参考:さくら(https://ssl.sakura.ad.jp/column/ssl/)

検証

では、ローカル環境で証明書を作ってNginxに組み込んで見るところまで

秘密鍵、証明書を作成

俺もよくわかっていないんだけど、とりあえず鍵をつくって、その鍵をもとに証明書を作るっぽいんだ

秘密鍵を作成

csrファイル(証明書リクエスト)を作成

sanファイルを作成(ローカルで利用するドメインを入力するのがいいみたい

crtファイルを作成(これが証明書

NginxにSSL証明書を使うように記述

以下2つの修正を入れる

  • serverディレクティブを追加して443ポートでSSLを使用するようにする
  • 既存の80ポートのディレクティブにもhttpsリダイレクトをするように修正

新しいディレクティブについても解説

sslディレクティブ

コンテキスト http, server
説明 HTTPS通信するかどうか
デフォルト値 off

ssl_certificateディレクティブ

コンテキスト http, server
説明 サーバ証明書を指定する
デフォルト値 なし

ssl_certificate_keyディレクティブ

コンテキスト http, server
説明 サーバ証明書の秘密鍵を指定する
デフォルト値 なし

リスタートして、ブラウザを開いてみたらhttpsで見れたら成功(でもオレオレ証明書だからってすげー警戒されるんだよねwそれについての回避策も確かあったはずだから別の機会で

まとめ

  •  https通信するためにはサーバ証明書と秘密鍵のペアが必要
  • Nginxではssl, ssl_certificate, ssl_certificate_keyディレクティブを指定すれば可能
  • ローカルで作った証明書はオレオレ証明書と呼ばれ、ブラウザから警告を受ける

 

nginx実践入門
nginxを現場で活用するための知識を、実践的なノウハウを交えて解説した書籍です。
nginxのインストール方法や基本的な設定方法からはじめ、nginxを利用した「静的コンテンツ配信サーバ」「HTTPSサーバ」「Webアプリケーションサーバ」「大規模コンテンツ配信システム」の構築方法をそれぞれ詳しく紹介しています。後半ではnginxサーバのモニタリングやログの収集、そして軽量スクリプト言語Luaでnginxを拡張する方法について解説しているので、nginxをこれから使う方はもちろん、さらに活用したい方にもお勧めです。
  • この記事を書いた人

シロー

Webシステムの開発のお仕事をさせて頂いております。 フリーランスの日常、Web開発に関する情報を発信しています。 趣味はゲーム、映画鑑賞、個人サービスを作ることです。

-Nginx, セキュリティ

© 2021 Shiro's secret base