概要
Ubuntu16.04 で apt install できる nginx に SSL 証明書を設定して https 通信させてみました
Web 上に他にもいろいろと nginx + ssl の記事はありますが自分の備忘録として残しておきます
環境
- Ubuntu 16.04
- nginx 1.10.3
nginx のインストール
- apt -y install nginx
今回は apt でインストールします
執筆時点での nginx の最新版は 1.13.3 なのでバージョン的にはかなり古いものになります
SSL の有効化
ディレクトリ構成などは apt install できたものをそのまま採用してます
設定ファイルの作成
まず SSL 用の設定ファイルがないので作成します
- touch /etc/nginx/sites-available/ssl
- vim /etc/nginx/sites-available/ssl
server {
listen 443;
server_name your.site.domain.com;
ssl on;
ssl_certificate /etc/ssl/certs/chain_server.crt;
ssl_certificate_key /etc/ssl/certs/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:9292/;
proxy_redirect default;
}
}
server_name には 443 で受けるサーバまたはロードバランサのドメイン名を指定してください
ポイントとしては ssl_certificate の項目で nginx の場合 CA 証明書を設定する欄はなく ssl_certificate でサーバ証明書と CA 証明書を設定します
つまりどういうことかというと 2 つのファイルを結合して配置します
連結証明書の作成
- scp server.crt server.key ca.crt server001:/etc/ssl/certs
ローカルからサーバに証明書を転送します、すでにサーバに証明書一式がある場合はこの作業は不要です
パスは「/etc/ssl/certs」に配置します
- cd /etc/ssl/certs
- cat server.crt ca.crt >> chain_server.crt
単純に cat で結合すれば大丈夫です
設定ファイルを有効化
Ubuntu + apt install の場合 sites-enabled に使いたい設定ファイルのシンボリックリンクを作成することで設定を追加することができます
Apache とかもこの方式を採用しています
- cd /etc/nginx/sites-enabled
- ln -s /etc/nginx/sites-available/ssl ssl
- rm default
- systemctl restart nginx
作成した ssl を sites-enabled にリンクして終了です
あとは nginx を再起動してあげましょう
動作確認
ブラウザや curl で適当にドメインにアクセスして localhost:9292 で動作してるアプリにアクセスできるか確認してください
もちろんローカルで動作しているアプリは別のものに変更して大丈夫です
最後に
Ubuntu16.04 の nginx で https 通信を設定してみました
Web 上に膨大な情報があるので簡単にセットアップできると思います
この後の Tips でも紹介していますが、地味に ufw の設定などでハマるかもしれません
Tips
もし key ファイルにパスが設定されている場合は以下のコマンドでパスフレーズがない key ファイルを作成してください
パスフレーズがあっても問題ないのは問題ないですが、systemctl で自動起動などができなくなります
- openssl rsa -in server.key -out nopass_server.key
パスフレーズがわからない場合はさすがに証明書の管理者に聞くしかないと思います
Ubuntu の場合 ufw が効いているので 443 をオープンしましょう
- ufw allow 443
あと curl で以下のようなエラーが出た場合は CA 証明書が適切に連結されているか確認してみてください
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
証明書によっては CA ファイルが不要な証明書もあるのでその場合は特にエラーも出ないと思います
0 件のコメント:
コメントを投稿