はじめてのVPS 初期セットアップ⑥ ~SSLの設定~

2020/12/08

「はじめての VPS シリーズ」の第6回目です。

前回は独自ドメインを取得して、さくらの VPS に独自ドメインの設定をしました。

今回は VPS にSSL証明書(Let's Encrypt)を導入してみます。

 

今回のゴール

 

前提条件

Let's Encrypt(レッツエンクリプト)について

 
WEBサイトにSSL化するには、SSL証明書が必要になります。

一般的には、「ジオトラスト」や「グローバルサイン」などの認証局が発行する有料の証明書を購入してサーバーにインストールします。

しかし、無料のSSL証明書発行サービスである Let's Encrypt の正式サービスが2016年4月に開始されました。

これにより、誰でも無料でSSL証明書を手にいれることができるようになりました。

Chromeブラウザでは SSLサーバー証明書を導入していないサイトに対して「保護されていません」の警告表示がされます。SEO的にもかなり不利なので、常時SSL化は必須です。

ただ、以下の3点は注意しましょう。

  • IPアドレス指定でアクセスする場合のSSLには対応していない → 独自ドメインのみ
  • SSL証明書の有効期限は3ヵ月 → cronによるスケジュール自動実行
  • 対応しているのは「ドメイン認証証明書」のみ

 

手順

 

mod_ssl のインストール

サイトをSSL化するには、Apacheのモジュール mod_ssl が必要です。


#mod_ssl インストール
$ yum install mod_ssl

# mod_ssl が導入済みか確認
$ httpd -M

 

httpd -Mコマンドを実行して、以下のように ssl_module が一覧に表示されていればOKです。

 

ポートの確認(ファイアウォール)

SSLを使用可能にするにはhttp通信の80番ポートではなく、https用の443番ポートがファイアウォールを通過できないといけません。

以下のコマンドで、https通信がファイアウォールで許可されているか確認します。


#https通信がファイアウォールで許可されているかどうか確認
$ firewall-cmd --list-all

 

下記のように services の項目に https があればOKです。

https のポートに穴がない場合は以下のページの「手順3 ファイアウォールの設定」で穴を空けてください。

 

Let's Encryptのインストール

Let's Encrypt のインストール


# Let's Encrypt のインストール
# certbot と certbot の apache用プラグイン(python2-certbot-apache)をインストール
$ yum install certbot python2-certbot-apache

 

実演

 

証明書をインストール

cerbotコマンドを実行して証明書をインストール


#laravel.tokyo の部分は自分のドメイン名に置き換えてください
$ certbot --apache -d laravel.tokyo

 

以下のようにいくつか質問されます。順番に答えてください。


 

自分の場合は途中で 「仮想ポートを設定してください」 というエラーが表示されました。

エラーを解決して証明書をインストールするために、ポート 80 に仮想ホストを設定します。


# vimで設定ファイルを開く
$ vim /etc/httpd/conf/httpd.conf

 

vimでhttpd.confを開いたら末尾に以下を追記します。

「laravel.tokyo」 には自分のドメインを入力してください。「DocumentRoot」 も人によっては異なるため、適切なものを入力してください。

:
NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin root@laravel.tokyo
DocumentRoot /var/www/html
ServerName laravel.tokyo
</VirtualHost>

:wq で保存します。

再度、$ certbot --apache -d laravel.tokyo を実行します。

今度は途中で止まることなく証明書が発行されます。

上記のような表示になればOKです。

 

WEBサーバーの再起動

httpd(WEBサーバー)を再起動して反映。


$ systemctl restart httpd

 

動作確認

自分のドメインのURLで詳細を見てみると、Let's Encryptで認証されたSSLであることが分かります。

これでSSL証明書が使えるようになりました。

cronによるスケジュール自動実行は次回やろうと思います。

 
以上です。

 

さくらのVPS

Linuxの知識がある方や初心者の枠から脱した人は「VPS」をおススメします!もし、あなたがデザイナーで静的ページのサイトしか作らないのであれば「レンタルサーバー」でOKです。ただ、Webプログラマーとして仕事をするのであればroot権限のあるVPSサーバーを最低1台、自分専用(学習用)を持っておいたほうがいいでしょう。

Laravelプログラマーの初心者が選ぶ学習用サーバーとは?

公式サイトで詳細を見る

オススメ

 

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-環境構築