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

2022/01/01

「はじめての 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によるスケジュール自動実行
  • 対応しているのは「ドメイン認証証明書」のみ

 

新しいLinuxの教科書

ただ、読むだけではなく実践しながら進める形式になっています。(※コマンド一覧とか早引きの本ではありません)初心者がつまずくであろう箇所は補足説明がしっかり入っています。基本を大事にしている本なので、書いてあることはとてもわかりやすいです。それゆえ、中級者以上の方には物足りないかもしれませんが、初学者にはススメします!

公式サイトで詳細を見る

オススメ

 

手順

 

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

 

下記2つのドメインに対して行う場合
 
・yomikata.biz
・admin.yomikata.biz
 


[root@example ~]#certbot --apache -d yomikata.biz -d admin.yomikata.biz

 

 
完了後、Apacheの設定ファイル conf.d/{ファイル名}.conf をベースにconf.d/{ファイル名}-le-ssl.conf が作成されます。

 
Apacheを再起動すると適用されます。


[root@example ~]#systemctl restart httpd

 
ちなみにドキュメントルートを設定していたファイル(※例だと yomikata.biz.conf )には常時SSLの設定が加えられます。

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


 

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

エラーを解決して証明書をインストールするために、ポート 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です。

【 証明書を取得しなおす 】
 
1)/etc/letsencrypt/archive/ドメイン名/の中にあるpemファイルを確認

 
2)上記の cert1.pem を指定して revoke 実行

 
3)前回、証明書を取得したときに生成された ドメイン-le-ssl.conf を削除

 
4)Apache の再起動


[root@example ~]# systemctl restart httpd

 

WEBサーバーの再起動

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


$ systemctl restart httpd

 

動作確認

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

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

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

 
以上です。

 

さくらのVPS

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

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

公式サイトで詳細を見る

オススメ

 

本庄マサノリ

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

>> Twitter をフォローする

 

-環境構築