はじめに
ブログのSSL化、無料で済ませたい!
そう思ったら、SSL証明書の選択は2つに絞られますよね。
・Let’s Encrypt
このどちらかです。
でも、無料のACM証明書を導入するためにはどうしてもALB(Application Load Balancer)を導入しなきゃいけないので、SSL証明書自体は無料でも月額費用が高くついちゃうんですよね…。
そうすると自動的に「Let’s Encrypt」をサーバにインストールする選択が残るんですけど、Bitnamiでワードプレスブログを構築しているユーザーがカンタンにLet’s Encryptの導入しようにも、英語サイトしかない!!!
いや、一部あるんですが超カンタンな方法が載ってるサイトは英語なんですよね。
じゃあ記事にすればいいじゃん!ってわけです。
Bitnami×Let’s Encryptの導入対象
この記事のやり方だと、前提として以下の条件が満たされている必要があります。
・独自ドメインを持っていること
・そしてそのドメインが該当のインスタンスのパブリックIPを向いていること
たとえばAWSのマーケットプレイスでBitnami×ワードプレスのパッケージを購入してインストールした方であれば何ら問題なく条件に合致しますので、ご安心を!
あとは、SSL対応したいんだから独自ドメインは持っていて、「HTTP」でのアクセスはできる状態が前提なわけですね。
あとは常時SSL化だけが残っているわけです。
Let’s Encryptの導入は驚くほどカンタンです。
恐れずいきましょう!
Legoクライアントのインストール
まずはSSHターミナルソフトなどでインスタンスにアクセスします。
もし、SSHターミナルソフトってなにさ?って方は「【読了5分+作業5分】SSHターミナルソフトとFTPクライアントソフトで事前準備完了!」を参考にしてダウンロードしてアクセスしましょう!
Bitnamiユーザーとしてサーバにアクセスします。
まずは「Legoクライアント」をGitにアクセスしてインストールします。
大丈夫です。なにも考えず、ただただコマンドを打つだけです。
cd /tmp curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i - tar xf lego_v2.3.0_linux_amd64.tar.gz sudo mv lego /usr/local/bin/lego
一点注意点としては、コマンド内の「lego_v2.3.0_linux_amd64.tar.gz」は2019年3月22日現在の最新ファイルです。
作業されるタイミングによっては、バージョンが変わっているかもしれないので、都度最新バージョンをGitHubのlegoのページで確認して、必要だったら「2.3.0」の部分だけ変えてくださいね!
あと、どうしてもうまくいかないって人は、上のコマンドの「wget -i – tar」の部分の「tar」の前に半角スペースが空いているか注意してくださいね!
ちなみにターミナルソフトの使い方が「ようわからん!」って人は、上のコマンドを1行ずつコピーして右クリックしてエンターを繰り返せば勝手に処理されますぜ!
一応、慎重に作業しましょうね。
Let’s Encrypt証明書を生成
ここから先の流れは、
が前提です。
いよいよLet’s EncryptのSSL証明書を作っていきますよ。
まず、Bitnamiのサービスをいったん停止します。
sudo /opt/bitnami/ctlscript.sh stop
ちなみに、コマンドって「sudo」からはじまる記述が多いと思いますが、これ、「Super User」(スーパーユーザー。root権限、特権レベルのユーザー)としてこれから書きますよってことです。厳密には「su」と「sudo」は違いますが、それはまた別の機会に。
次にドメインに対して、新しい証明書を生成するコマンドです。
sudo lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="www.DOMAIN" --path="/etc/lego" run
「EMAIL-ADDRESS」、「DOMAIN」は適宜自分のものに変えてください。
また、サブドメインを含む複数のドメインをSSL化する必要があるときは、「–domains=”www.DOMAIN”」の「www」を対応したいサブドメインに変えればOKです。
たとえば、「grosme-fukugyo.com」の他にも、「www.grosme-fukugyo.com」と「sub.grosme-fukugyo.com」の2つのサブドメインについて同時にSSL対応したい場合は、
sudo lego --email="[email protected]" --domains="grosme-fukugyo.com" --domains="www.grosme-fukugyo.com" --domains="sub.grosme-fukugyo.com" --path="/etc/lego" run
といったコマンドになるってことです。便利ですね。
エンターを押すと、承認を求められるので「Y」と入力してエンター。
あとは、自動で処理が進んで、「/etc/lego/certificates」というディレクトリが作られて、「DOMAIN.crt」という証明書ファイルと「DOMAIN.key」という鍵ファイルがディレクトリ内に生成されます(もちろん「DOMAIN」の部分は自分のドメインになりますよ)。
ちなみにlegoコマンドが実行できないときは、/usr/local/bin/legoのパーミッション設定を見直してみましょうね!
Let’s Encryptの証明書をWebサーバにセットする
あとは生成した証明書をWebサーバに設定してあげるだけです。
ちなみにお使いのWebサーバが「apache」なのか「NGINX」なのかでコマンドが変わります。
どちらかわからないという人は、以下のコマンドを打てばわかりますよ!
sudo /opt/bitnami/ctlscript.sh status
apacheの場合
sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old sudo mv /opt/bitnami/apache2/conf/server.csr /opt/bitnami/apache2/conf/server.csr.old sudo ln -s /etc/lego/certificates/DOMAIN.key /opt/bitnami/apache2/conf/server.key sudo ln -s /etc/lego/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/server.crt sudo chown root:root /opt/bitnami/apache2/conf/server* sudo chmod 600 /opt/bitnami/apache2/conf/server*
「DOMAIN」の部分は自分のドメインに変更してくださいね!
NGINXの場合
sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/nginx/conf/server.crt.old sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/nginx/conf/server.key.old sudo mv /opt/bitnami/nginx/conf/server.csr /opt/bitnami/nginx/conf/server.csr.old sudo ln -s /etc/lego/certificates/DOMAIN.key /opt/bitnami/nginx/conf/server.key sudo ln -s /etc/lego/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/server.crt sudo chown root:root /opt/bitnami/nginx/conf/server* sudo chmod 600 /opt/bitnami/nginx/conf/server*
こちらも同様に、「DOMAIN」の部分は自分のドメインを!
最後にBitnamiサービスを再起動したら完了です。
sudo /opt/bitnami/ctlscript.sh start
Let’s Encrypt証明書の更新
おまけとして、Let’s Encryptの証明書更新方法も書いておきます。
Let’s Encryptって3か月しか期限がないので、更新作業は必須なんですよ。
やり方はカンタンです。
sudo /opt/bitnami/ctlscript.sh stop sudo lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/etc/lego" renew sudo /opt/bitnami/ctlscript.sh start
こちらも「EMAIL-ADDRESS」と「DOMAIN」は自分のものに変更してくださいね。
おわりに
「BitnamiでLet’s Encryptを導入する方法」でした。
すごくカンタンでしたよね。
お話ししたとおり、Let’s Encryptは3か月で更新しなければいけない証明書なので、更新作業を頻繁にしなきゃいけないのが、ちょっと欠点ですね。
でも、無料ですけどね。
あとは、証明書を更新するスクリプトを書いて、自動更新の設定をすることもできますが、これはまた別の記事で☆