目的

WordPressとかのサイトを無料でSSL化するための手順メモ
今としてはWordPressは使う気は無いし、このサイトも自分でSSL設定はしていないが、一応残しておく。
2019年4月ごろのやり方。


使用するツール

SSL化のための証明書の取得に、Let’s Encryptというツールを使い、 証明書の発行にお金がかかってしまうところを無料で行おうというもの

Let’s Encrypt WikiPedia

さくらのレンタルサーバ等は、Let’s Encryptを使った専用のページがあるようで、便利ですね。


実装

サーバにログインし、以下コマンドを実行していく。
今回はCentOSの場合です。

Certbotを使用するため、EPELパッケージをインストール

# yum install epel-release


Certbot関連のインストール

# yum install certbot python-certbot-apache
Is this ok [y/d/N]: y


完了後、Certbotインストールされたことの確認

# certbot -h
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...


Certbotの設定を行う

# certbot certonly --webroot -w 「サイトのトップディレクトリ」 -d 「ドメイン(yahoo.co.jpとか)」


Please read the Terms of Service at...
(A)gree/(C)ancel: 
-> A


Would you be willing to share your email address...
(Y)es/(N)o: 
-> どちらでも


以下が表示されれば無事成功

IMPORTANT NOTES:
 - Congratulations!


証明書関連ファイルの確認
lsコマンドより5つファイルが確認できる 絶対パス含めてメモしておく

# ls -la /etc/letsencrypt/live/「ドメイン」/
README
cert.pem
chain.pem
fullchain.pem
privkey.pem


以上で証明書取得が完了。
以下よりサーバ側の設定。取得した証明書をサーバに認識させる。

ssl設定ファイルの存在確認
無かったらsslインストールからかな..

# ls /etc/httpd/conf.d/ssl.conf


設定ファイル編集(事前にバックアップとかあったほうがいいかも)

# vi /etc/httpd/conf.d/ssl.conf 

//以下の行を修正 //サイト情報

DocumentRoot 「サイトのトップディレクトリ」
ServerName 「ドメイン」:443

//取得したcert.pemを設定
SSLCertificateFile /etc/letsencrypt/live/「ドメイン」/cert.pem

//取得したprivkey.pemを設定
SSLCertificateKeyFile /etc/letsencrypt/live/「ドメイン」/privkey.pem

//取得したchain.pemを設定
SSLCertificateChainFile /etc/letsencrypt/live/「ドメイン」/chain.pem


設定ファイルの編集が完了したら、サーバを再起動

# service httpd restart


問題なく起動していることを確認

# service httpd status
....
Active: active (running)


以上で証明書の設定も終わり。
次に、このツールの特殊なところとして、約3ヶ月で証明書の期限が切れるので、サーバからコマンドを実行して証明書を更新する必要があるのでその処理。

以下コマンドで更新

# certbot renew


さすがに一定期間ごとにサーバにログインして打つのも大変なので、cron設定で自動的に更新を行う。

cron設定モード

# crontab -e

設定内容は、以下を参考程度に
サーバエンジニアじゃないので違ったらごめん

00 05 01 * * certbot renew && /bin/systemctl reload httpd

以上で証明書の更新作業は完了。

最後の最後にhttps化によるアクセス設定を行う。まずサーバのサイトトップディレクトリの.htaccessに以下のような設定を加える。

サイトトップディレクトリより

# vi .htaccess

以下を参考程度に またまた、サーバエンジニアじゃないので違ったらごめん

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


WordPressの場合は、管理画面より

設定
> 一般設定

より

WordPress アドレス (URL) と
サイトアドレス (URL)に
httpsの方のURLを記載する。

以上でやっと完了でしょうか。

今回2回目の設定で、今回はすんなりできた。
1回目はssl.confの設定でめちゃくちゃ時間かかった。。