0%

DevelopWEB開発・運用ノウハウ

Posted:2017.09.21

無料SSL証明書のLet’s EncryptでVPSサーバーの常時SSL化

近年、Googleもウェブサイトの常時SSL化を強く推奨してきました。一般的なレンタルサーバーを使っている場合はオプションでSSL証明書が用意されていますが、VPSサーバーを使用していると自分で設定する必要があります。そこで今回はLet’s Encryptという無料で利用できるSSL証明書を使ってVPSサーバーで運用しているサイトの常時SSL化についての作業をまとめていきます。サーバーですが、さくらVPSを使用している前提で進めていきます。

 

1. Let’s Encryptと証明書のインストール

1-1. まずはサーバーへSSH接続を行いログインします。その後、rootユーザーに切り替えます。

 

1-2. SSLを使用する上でApacheの「mod_ssl」が必要となります。下記コマンドで「mod_ssl」がインストールされているかを確認します。

# httpd -M
---------
ssl_module (shared)  // この表示があればOK

 

1-3. さらにhttpsプロトコルで使用するポート番号の443がfirewallで開放されているかも以下のコマンドで確認しておきます。

# firewall-cmd --list-all
---------
services: dhcpv6-client http https ssh  // ここに「https」の表示があればOK

 

1-4. これで問題なければ下記コマンドでLet’s Encryptのインストールを行います。途中で確認メッセージがありますので「y」を入力して先に進めていきます。

# yum install certbot python2-certbot-apache

 

1-5. 続いて下記コマンドで証明書をインストールしていきます。サブドメインも対象とする場合には「-d」オプションで続けて指定し、複数のドメインが対象となる場合はそれぞれのドメインごとに作業を進めていきます。

# certbot --apache -d example1.com

// サブドメインにも適用させる場合は-dオプションで追加する
# certbot --apache -d example1.com -d www.example1.com -d foo.example1.com

// ドメインが複数ある場合は分けてコマンドを入力
# certbot --apache -d example2.com
# certbot --apache -d example3.com

 

1-6. インストールが進んでいき、途中でメールアドレスを質問されるので入力します。

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [メールアドレスを入力]

 

1-7. 続いて規約への同意が求められるので同意します。

(A)gree/(C)ancel: [A]

 

1-8. 先ほど登録したメールアドレスの公開へ同意します。

(Y)es/(N)o: [Y]

 

1-9. httpへのアクセスをhttpsにリダイレクトさせるかどうかを指定します。今回はリダイレクトさせる形で進めていきます。

Select the appropriate number [1-2] then [enter] (press 'c' to cancel): [2]

 

1-10. 設定が完了し、最後に証明書の鍵のパスなどの情報が表示されます。ブラウザでhttpsのURLにアクセスして確認します。また証明書の詳細情報を見ると発行者の項目に「Let’s Encrypt」と表記されているのが確認できます。

 

無料SSL証明書のLet’s EncryptでVPSサーバーの常時SSL化

無料SSL証明書のLet’s EncryptでVPSサーバーの常時SSL化

 

また、2018年以降は証明書インストール時のcertbotコマンドで下記のエラーが出ることがあるようです。

Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.

 

その場合は、下記のように一旦httpdを停止させてから、以下のコマンドで証明書をインストールし、再びhttpdを再起動させる形になります

# systemctl stop httpd
# certbot --authenticator standalone --installer apache -d example.com 
# systemctl start httpd

 

 

2. 証明書更新とcronによる自動更新設定

証明書は90日の有効期限があるので、都度更新する必要があります。有効期限が30日を切ったら下記コマンドで証明書の有効期限を更新することができます。

# certbot renew

 

ただ、この方法ですとうっかり更新作業を忘れてしまったり、毎回の作業が面倒だったりするのでcronによるスケジューリングで自動更新させることも可能です。

 

2-1. まずは下記コマンドで更新が正しく行われるかを確認します。

# certbot renew --dry-run

 

2-2. 更新されたのが確認できると下記コマンドで「crontab」ファイルを開き、cronのタスク登録を行います。

# vim /etc/crontab

 

2-3. 「crontab」に下記のような形で証明書更新のタスクを追加します。以下の場合は毎日午前1時30分と2時30分に証明書更新を行う形になります。(何らかの原因で更新されないトラブルを防ぐため)

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

// 以下を追記する
30 1 * * * root certbot renew --quiet
30 2 * * * root certbot renew --quiet

 

2-4. 保存したら下記コマンドでcronを再起動します。

# systemctl restart crond

 

ちなみに「/etc/letsencrypt/renewal/」配下にあるそれぞれのドメインに紐づいた設定ファイルで証明書の詳細情報が確認できます。また、ブラウザから証明書の更新日と有効期限も確認できます。

 


 

これでウェブサイトの常時SSL化が完了しました。作業自体はそんなに時間はかかりませんが、エラーが出たりする場合があるので、一つひとつの作業を確実に行うことが重要です。

 

もしhttpで既にサイトを運用している場合は、常時SSL化によっていくつか変更する作業が発生してきます。詳しくは「常時SSL化した後に行う変更作業まとめ」をご覧ください。

 

サイトの常時SSL化はセキュリティ面であったりSEOの観点から今後より重要になってくるかと思います。ぜひ早めに済ませておくことをオススメします!

author
この記事を書いた人オガワ シンヤ
FacebookTwitter

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

制作のご依頼やお問い合わせ・パートナー業務提携のご相談はこちら

デザインやウェブ制作についてのご依頼やご相談、その他お問い合わせなどもお気軽にご連絡ください。フットワークの軽さやレスポンスの早さ、また豊富な経験や知識、技術を活かした対応力といったフリーランスクリエイターの強みでクライアント様、パートナー企業様のお力になります。デザインからコーディングやWordPress実装といったウェブサイト構築はもちろん、写真撮影や動画編集、コンテンツ制作からサイト運用サポートまで一括してお任せください。

ホームページ制作のご検討やウェブ運用でお悩みの経営者様や企業のウェブ担当者様をはじめ、個人で店舗を営んでいらっしゃるオーナー様、フリーで活動されているビジネスオーナー様はもちろんのこと、リソース不足でお困りの制作会社様、またクリエイターをお探しの代理店様も大歓迎です。

コンタクトをご希望の方はお手数ですが、下記よりお問い合わせフォームのページへアクセスしていただき、必要事項を入力の上メッセージを送信してください。確認でき次第すぐに折り返しご連絡致します。

こんな記事も読まれています

コメントもお気軽にどうぞ

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

CAPTCHA


ページトップへ
大阪市天王寺区のホームページ制作デザイン事務所(SOHO)DesignSupply.【デザインサプライ】