Let’s Encrypt 導入手引き
どもども、ピン村です。
2019年まであと少しというところですが、2018年内にhttpsの導入を自分でできないっていうのは何か今までlinux使っていろんなことやってきましたが "えぇ~、SSL化すらできないのぉ~?" と誰かに言われそうな気がするので頑張ってやってみます。
Contents
Let’s Encryptって何?
これはですね、webサービスをhttps化するにあたって第三者機関に "このwebサービスは安全だよ" というようなお墨付きをもらうための証明書をタダで発行してもらえるサービスになります。
まぁ、人間 "タダ" という言葉以上に怪しいものはないのですが下記をご覧ください。
「証明書の発行・インストール・更新のプロセスを自動化」したからです。お使いになるとわかりますが、慣れると設定はあっという間に終わります。
つぎに大切な安全性についてです。確かに過去には不正使用された情報があります。ただ、専門家で構成された技術顧問によって支援されているので、安全性は高いと考えています。
ということだそうです。
今までは、年間で数万~数十万の桁でお金が吹っ飛びましたからね....
このサービスのおかげでいろんなwebサービスが立ち上がりサービスを安全に利用できる仕組みが出来上がったわけですが、いかんせん導入するのに は? となることがあるのも事実です。
それでは、実際に構築手順を見ていきましょう。
なにはともあれNginxを入れる。
vi /etc/yum.repo.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
root@localhost ~# yum -y install nginx
Let's Encryptによるssl証明書発行
次に、certbot と呼ばれるクライアントソフトを利用しnginxに対してssl証明を発行できるようにします。
root@localhost ~# yum -y install certbot-nginx
root@localhost ~# certbot –nginx -d example.com (*example.comはサンプルです)
上記コマンドを入力すると下図のような画面が表示される。
ここでは、メールアドレスを登録する 、 C単体を押すと cancelになってしまい処理が止まるので注意すること。
次に、利用規約に同意するかどうか聞いてくるので(A) Agreeを入力
メールアドレスを入力したときに情報をLet's Encrypt側に提出するかどうか聞いてきます。
ここでは (N) No を入力しました。
次に、http のurl を httpsの新しいurlにアクセスをリダイレクトするか聞いてきます。
ここは、[1] を選択しリダイレクトをyesにしました。
最後にこのような画面が出ればssl証明書は無事発行されています。
見てのとおりですが、画像左上のところに -Congratulations! と出てますね?
Let's Encryptを半永久的に使う
せっかくタダのsslです。
それなら半永久的に使いましょうということで、linux標準装備の cron を利用し処理を半永久的にします。
root@localhost ~# crontab -e
最初に、crontabを実行すると実行した先は何も書かれていないテキスト形式が表示されます。
insertで編集可能にして、定時チェックする日時を決めます。
私の場合は、30 2 * /usr/bin/cerbot renew --quiet と書き毎日午前2:30(深夜)に更新を行うとしました。
WordPress使ってる場合
WordPress は初期でhttp通信となっています。
このため、https化したwebサーバをrebootしてしまうとwordpress側は、https化されていないためアクセスができなくなってしまいます。
↑これをやらかしまして、一時的にwordpressが表示されなくなったときはビビりました。(笑)
そこで、certbot –nginx -d example.com (*example.comはサンプルです) というコマンドを入力した後、正常にssl証明書を取得できた場合wordpressのプラグイン " Really Simple SSL "プラグインを利用し、一括でhttps化することで解決できます。
これを忘れないでください。
SSL証明書を取って、urlをhttps化せずにrebootしてしまった場合
大丈夫です。
とりあえず、sshがつながれば何とかなりますから。
root@localhost ~# certbot revoke --cert-path=/etc/letsencrypt/live/ドメイン名/cert.pem
これを実行してください。
さらに、vi /etc/nginx/conf.d/設定confも書き変わっていますので、sslに該当する追記箇所を消してください。
消した後は、nginx -tで文法チェックを忘れずに。
では、Let's Enjoy for Free SSL !!