5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS 7.5でNginxを導入しLet' EncriptでSSLを設定するまで

Last updated at Posted at 2018-07-29

CentOS 7.5上にNginxをインストールして、Let' EncriptでSSLを設定するまでの手順メモです。
実行環境は以下の通りです。

  • CentOS 7.5
  • Nginx 1.15.2
  • certbot 0.25.1

1. 前提条件

ここでは以下のやり方については実施済みであるものとし、説明しません。

  • 自分のドメインを取得済みであること
  • 外部からTCPポート80番でサーバまで到達可能なこと

2. Nginx(Webサーバ)導入

Nginxの公式サイトのインストール手順に沿ってインストールを進めることとします。

(1) リポジトリ情報の設定

Nginxは公式でリポジトリが公開されているので、これをyumで使用できるように設定します。
公式サイト記載の通り、以下内容で新規ファイル「/etc/yum.repos.d/nginx.repo」を作成します。

/etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

3行目のbaseurlをCentOS7用にしています。

(2) yumでNginxをインストール

リポジトリを設定するとyumで普通にNginxがインストール出来るようになっています。

# nginxが存在することを確認
yum info nginx
# nginxをインストール
yum install nginx

(3) Nginxの起動設定

Nginxのインストールが完了したら起動します。
またついでに自動起動設定をしておきます。
自動起動設定をしておくと、コンピュータ起動時にNginxが起動するようになります。

# 起動
systemctl start nginx
# 自動起動on
systemctl enable nginx

(4) firewall設定

外部から接続できるようにfirewallのhttp/https用ポートを開けておきます。

# http用ポートを開ける
firewall-cmd --add-service=http --zone=public --permanent
# https用ポートを開ける
firewall-cmd --add-service=https --zone=public --permanent
# 設定を反映
firewall-cmd --reload

※ここでは説明しませんが、ルータなどのポート開放は等は別途実施しておいてください。

(5) Nginx接続確認

ここまで実施するとブラウザからNginxに接続できるはずなので、外部から下記にアクセスしてみてください。
http://自分のドメイン名

Welcome to Nginx! の画面が表示されれば成功です。

3. Let's Encrypt でSSLを設定する

いよいよLet's EncryptでのSSLの設定を行っていきます。
Let's Encrypt は、クライアントソフトウェア「certbot」を使用することで、SSL/TLS サーバ証明書の取得・更新作業を自動化できる仕組みになっています。

(1) certbotのインストール

certbotの公式サイトによるとcertbotのNginxプラグインがあるようなので、ここではこれを使います。
certbotはEPELリポジトリにあるので、EPELリポジトリを先にインストールします。

# EPELリポジトリをインストール
yum install epel-release
# certbotのNginxプラグインが存在することを確認
yum info python2-certbot-nginx
# certbotとNginxプラグインをインストール
yum install python2-certbot-nginx

※certbotプラグインをインストールすることで、依存関係にあるcertbot本体は自動でインストールされます。

(2) Nginxにドメイン名を設定

certbotのNginxプラグインは、サーバ証明書取得と同時にNginxの設定も自動で行ってくれるのですが、
それには事前に認証に使用するドメイン名をNginxに設定する必要があるようです。

Nginxの設定ファイルに以下のようにドメイン名を設定します。

/etc/nginx/conf.d/default.conf
server {
    server_name  example.com;
・・・

※example.comは自分のドメイン名にしてください。

# Nginx再起動
systemctl restart nginx

(3) certbotでサーバ証明書の取得+Nginxの設定

certbot--nginxオプションつけて実行します。
--nginxオプションを付けることで、サーバ証明書取得に合わせて取得したサーバ証明書をNginxに設定してくれます。

certbotは対話形式で実行されるので、メッセージに従ってメールアドレスの入力などを進めていきます。

certbot --nginx

最後の方で以下のようなHTTPSのにリダイレクト設定について聞かれるので、ここでは2を選びます。

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

最後までいったらNginxを再起動して設定を反映します。

# Nginx再起動
systemctl restart nginx

(4) 接続確認

以上で設定は完了なので、外部からブラウザで下記にアクセスしてみてください。

Welcome to Nginx! の画面が表示され、アドレスバーに鍵のマークがついていれば成功です。(Chromeの場合)

(5) 証明書の更新

Let's Encryptで取得したサーバ証明書は有効期限が90日となっています。
そのため、有効期限が切れる前に証明書の更新が必要となります。
証明書の更新にもcertbotが使えます。

# サーバ証明書の更新
certbot renew
# Nginxを再起動して反映させる
systemctl restart nginx

ここでやり方は記載しませんが、cron等で自動的に更新することもできます。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?