CentOS7系にLet’s EncryptのSSL証明書を入れる

CentOS7系にLet’s EncryptのSSL証明書を入れる方法です。これはroot権限があるサーバーのみ有効ですおで、共有レンタルサーバーでは設定は出来ません。
Let’s EncryptのSSL証明書は、なんと無料です。GOOGLEはサイトのSSL化を推奨しておりますので、ワードプレスでのサイトでももちろんSLL化が推奨されます。
前述の通り、こちらは共有レンタルサーバーでは、ユーザー側で設定することが出来ません。本サイトがワードプレスでオススメしているXSERVERは、ここのSSLが無料で利用できます。
そのような意味でも、XSERVERをおすすめしております。


GitHubから「certbot」リポジトリをクローン

cd /usr/local/ で作業。ここでしなくてもいいのですが、一般的にはここで作業をします。
git clone https://github.com/certbot/certbot

 

Let’s Encrypt クライアントが依存するパッケージをインストールしてくれます。
cd certbot/
./certbot-auto -n

証明書取得コマンド

※ドメインのDNS設定、Apatcheの設定は終わっていないといけません。
※実際にドメインでアクセスできる状態で、index.htmlがないと行ません。
もちろんBASIC認証等があると、Let’s Encrypt側がアクセス出来ないので証明書はうまく通りません。

./certbot-auto certonly –webroot \
-w /home/www/wp-r.com/public_html -d wp-r.com \
-m webmaster@wp-r.com \
–agree-tos -n

「/home/www/wp-r.com/public_html -d wp-r.com」
/home/www/wp-r.com/public_htmlはドキュメントルートになります。
wp-r.comは、証明書を発行するドメイン名になります。www.wp-r.comで証明書を取得したければ、www.wp-r.comとなります。

Apatcheの設定を443番のバーチャルの後に記述

バーチャルドメインでなくてもいいのですが、下記はApatcheのhttpd.confもしくは、インクルードさせるCONFファイルの設定例です。
あくまで例ですのでドキュメントルートなどは環境に合わせて下さい。あえて、今回はディレクトリの設定はここでは、省いて案内しております。

<VirtualHost *:443>
ServerName wp-r.com
DocumentRoot “/home/www/wp-r.com/public_html”

SSLEngine on
SSLHonorCipherOrder on
Header set Strict-Transport-Security “max-age=31536000; includeSubDomains”
SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

SSLCertificateFile /etc/letsencrypt/live/wp-r.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/wp-r.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/wp-r.com/chain.pem

ErrorLog /home/wp-r.com/logs/err.log
CustomLog /home/wp-r.com/logs/acc.log common

</VirtualHost>

Apatche再起動

systemctl restart httpd
※自信がなければ、文法テストをして下さい。

証明書自動更新

3ヶ月毎の更新なので、自動更新を入れる。毎月1日朝3時の設定

00 03 01 * * /usr/local/certbot/certbot-auto renew –force-renewal && /bin/systemctl reload httpd

確認とワードプレスの設定変更

https://~で問題なく接続出来ることが確認できれば、
管理画面からサイトのURLをhttp://~からhttps://~に変更します。

HTTP→HTTPSリダイレクト設定

.htaccessに下記の内容を書いてリダイレクト処理を行います。

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