13,005
回編集
574行目: | 574行目: | ||
== HTTPS(SSL)の設定 == | == HTTPS(SSL)の設定 == | ||
==== CSRについて ==== | ==== CSRについて ==== | ||
CSR(Certificate Signing Request)とは、証明書発行要求といい、認証局に対して行う、認証局の秘密鍵で署名してもらうためのリクエストのことである。<br> | CSR(Certificate Signing Request)とは、証明書発行要求といい、認証局に対して行う、認証局の秘密鍵で署名してもらうためのリクエストのことである。<br> | ||
623行目: | 614行目: | ||
Webサーバに設置するものは、秘密鍵(.key拡張子)とサーバ証明書(.crt拡張子)の2つである。<br> | Webサーバに設置するものは、秘密鍵(.key拡張子)とサーバ証明書(.crt拡張子)の2つである。<br> | ||
<br> | <br> | ||
<u> | SSLを有効にするため、NginXの設定ファイルを編集する。<br> | ||
# パッケージ管理システムからインストールしている場合 | |||
sudo vi /etc/nginx/nginx.conf | |||
# ソースコードからインストールしている場合 | |||
sudo vi /<Nginxのインストールディレクトリ>/etc/nginx.conf | |||
<br> | |||
<syntaxhighlight lang="nginx"> | |||
# HTTPS server | |||
server { | |||
listen 443 ssl; # HTTP/2を有効にする場合は、http2と追記する | |||
server_name <ホスト名またはIPアドレスまたはドメイン名>; | |||
# サーバ証明書および中間証明書のファイルの指定 | |||
ssl_certificate <サーバ証明書のファイルのフルパス>; | |||
# 秘密鍵の指定 | |||
ssl_certificate_key <秘密鍵のファイルのフルパス>; | |||
ssl_session_cache shared:SSL:1m; | |||
ssl_session_timeout 5m; | |||
ssl_ciphers HIGH:!aNULL:!MD5; | |||
ssl_prefer_server_ciphers on; | |||
location / { | |||
root <ドキュメントルートのパス(絶対パスまたは相対パス)>; | |||
index index.html index.htm; | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
<u>ロードバランサにSSL証明書を設置して、SSL接続を終端することもできる。</u><br> | |||
<u>その場合、サーバ証明書は1つ用意して、ロードバランサからWebサーバまでの通信はhttpとなる。(httpsでも可能であるが、httpの方が負荷が軽いため)</u><br> | <u>その場合、サーバ証明書は1つ用意して、ロードバランサからWebサーバまでの通信はhttpとなる。(httpsでも可能であるが、httpの方が負荷が軽いため)</u><br> | ||
<br> | |||
<u>httpを使用するメリットとして、Webサーバで受けるアクセスがhttpとなるので負荷が減るためである。(暗号化された通信を複合するために、SSLの接続を受けるのは負荷が掛かる)</u><br> | <u>httpを使用するメリットとして、Webサーバで受けるアクセスがhttpとなるので負荷が減るためである。(暗号化された通信を複合するために、SSLの接続を受けるのは負荷が掛かる)</u><br> | ||
<br> | |||
==== 自己証明書の発行(クライアント側) ==== | |||
秘密鍵を作成する。<br> | |||
openssl genrsa -out <秘密鍵のファイル名>.key 2048 | |||
<br> | |||
作成した秘密鍵を使用して、クライアント側のCSRを作成する。<br> | |||
openssl req -sha256 -new -subj "/C=JP/ST=Tokyo/L=Tokyo City/O=Company Name/OU=Department/CN=*.<ドメイン名>" \ | |||
-key <秘密鍵のファイル名>.key -out <CSRのファイル名>.csr | |||
<br> | |||
作成したCSRに署名を行って、サーバ証明書を発行する。<br> | |||
<u><サーバ証明書のファイル名>.csrファイルは、サーバ証明書を発行するためのファイルのため、削除してもよい。</u><br> | |||
openssl x509 -sha256 -req -days <証明書の有効日数 例. 3650> -in <CSRのファイル名>.csr -signkey <秘密鍵のファイル名>.key -out <サーバ証明書のファイル名>.crt | |||
<br> | |||
<u>クライアントPCがWindowsの場合、Windows PCにインポートするには、サーバ証明書のファイル(.crt拡張子)をpkcs12形式に変換する必要がある。</u><br> | |||
openssl pkcs12 -export -inkey <秘密鍵のファイル名>.key -in <サーバ証明書のファイル名>.crt \ | |||
-out <クライアント側にインポートするサーバ証明書のファイル名>.p12 -name <任意の識別子名> | |||
<br> | |||
秘密鍵のファイルのアクセス権限を変更する。<br> | |||
chmod 400 <秘密鍵のファイル名>.key | |||
<br> | |||
CSRファイルは、サーバ証明書を発行するためのファイルであるため、削除してもよい。<br> | |||
<br> | |||
<u>サーバに設置するものは、サーバ証明書のファイル(.crt拡張子)と秘密鍵(.key拡張子)の2つである。</u><br> | |||
<u>Windows PCへ配布するものは、pkcs12形式に変換したクライアント側のサーバ証明書のファイル(.p12拡張子)である。</u><br> | |||
<br> | |||
Windows PCへクライアント側のサーバ証明書のファイル(.p12拡張子)をインポートする場合、ファイルを実行することによりインポート画面が起動するため、<br> | |||
インポート画面に沿って、サーバ証明書のファイル(.p12拡張子)をインポートする。<br> | |||
<br><br> | <br><br> | ||