GCPとWordPressを使って独自ドメインブログを無料で運営してみよう!「7.SSL証明書設置(Let’s encrypt)」
この連載ももう中盤です。
もうしばらくお付き合いください。
今回はドメインをSSL対応にします。
何をするかと簡単に言うと「http」ではなく「https」に対応するようにします。
そのためには証明書と言うのが必要ですが、これがまた高いんですよね。
しかも有料で定期的に更新しないといけない。
お値段が気になる方はこちらとかのぞい見てください。
https://www.joes-ssl.com/hikaku/
しかし!
これも無料でやってみましょう。
なんで証明書を取得するかは下方に書いておきますので、気になる方は読んでみてください。
とりあえずやってみよう
GCPにアクセス
ログイン
前回登録したアカウントでログインして下さい。
コンソールにアクセス
コンソールリンクをクリックします。
Compute Engineにアクセス
Compute Engineをクリックします。
VMインスタンス選択
「wordpress-1-vm」などのwordpressに関連する名前があると思いますので、それをクリックします。
SSH接続
SSHと書かれているところをクリックします。
ブラウザによっては「SSH接続を開始しますか」と聞かれますが、その場合は「Yes」を押して進みましょう。
SSHに不慣れな方はまず心に準備を
わけ分かんない黒い画面(以下、SSH。SSLではない)が出現します。
ここからはマウスはあまり使えなく、キーボードを打たないといけませんし、間違えて打つと正常に動かなかったりします。
不慣れの方は不安かも知れませんが、怖がる必要はありません。
このポストに書かれている通りにすれば大丈夫です。
ちなみにこれからいくつかのポストでSSHの画面を使うので、このSSH画面に辿りつく方法を覚えるか、SSH画面を閉じないようにしてください。
必要なプログラム設置
下記のをSSH画面に入力します。
コピー&貼りつけでもOKです。
sudo apt-get install python-certbot-apache -t stretch-backports
注意:今までこのポストに書かれてあった
のコードですが、このブログを書く時にはlaunchpadで配布されるOSのバージョンがDebian 8だったためこのコードで大丈夫でした。しかし、2019年1月28日現在確認したところDebian 9になっているため、新たにWordPressを設置する方は上記のコードを利用しなければなりません。
sudo apt-get install certbot python-certbot-apache -t jessie-backports
そしてEnterを押下。
しばらくしたら続けるか聞かれますので、「y」を入力してEnterを押下して下さい。
何やらが始まりますが、これは必要なものをサーバーにダウンロードしているのです。
2~3分すると終わります。
SSLサーバー証明書取得
下記のようにSSH画面に入力してEnterを押下。
sudo certbot certonly --email [あなたのEmailアドレスを入力] --webroot -w /opt/bitnami/apps/wordpress/htdocs/ -d [wwwが付いて無いあなたのドメインを入力] -d [wwwが付いてあるあなたのドメインを入力]
例:
sudo certbot certonly --email abc@gmail.com --webroot -w /opt/bitnami/apps/wordpress/htdocs/ -d yongjinkim.work -d www.yongjinkim.work
そうすると、利用規約同意が表示されるので、「A」を入力してEnterを押します。
しばらくすると「Congratulations!」と成功したとメッセージが出ます。
Webサーバーにサーバー証明書を認識させる
下記のようにSSH画面に入力してEnterを押下。
sudo ln -sf /etc/letsencrypt/live/[wwwが付いて無いあなたのドメインを入力]/fullchain.pem /opt/bitnami/apache2/conf/server.crt
sudo ln -sf /etc/letsencrypt/live/[wwwが付いて無いあなたのドメインを入力]/privkey.pem /opt/bitnami/apache2/conf/server.key
例:
sudo ln -sf /etc/letsencrypt/live/yongjinkim.work/fullchain.pem /opt/bitnami/apache2/conf/server.crt
sudo ln -sf /etc/letsencrypt/live/yongjinkim.work/privkey.pem /opt/bitnami/apache2/conf/server.key
Webサーバー再起動
下記のをSSH画面に入力してEnterを押下。
sudo /opt/bitnami/ctlscript.sh restart apache
このように表示されれば再起動出来たことになります。
確認
あなたのドメインの先頭に「https://」を付けてアクセスしてみましょう。
Chromeでアクセスした場合、「保護された通信」と表示されたら、SSL導入成功になります。
お疲れ様でした。
FAQ
SSLってなに?
Secure Sockets Layerの略字です。
サーバーとそのサーバーにアクセスしている利用者間の通信を暗号化するものです。
SSL導入すると何が良いの?
- 良いことの一つは入力した内容が保護されます。
例えば、あなたが今まで設置したあなたのブログにログインする際にIDとパスワードを入力した時、httpのままだと筒抜けになります。
筒抜けになる原理はあなたが入力したIDとパスワードはあなたのブログサーバーにダイレクトに送られるのではなく、多数のルーターを通っていくためです。
悪意を持った人がルーターに細工をすると、暗号化されてないIDとパスワードはその人に読み取られるのです。 - もう一つの良いことはSEO面で効果があります。
これはGoogleの公式ブログにも書かれている内容です。
https://webmaster-ja.googleblog.com/2014/08/https-as-ranking-signal.html
これによると凄く影響があるわけではないが、「長い期間をかけて強化していきます」と明記しているので、SEO対策になるはずです。
正常に動作しない!!
原因はさまざまなのでどれが原因かは直接見ない限り俺にも分かりません。
これに関する公式文書がありますので、こちらを参考にしてみてください。
https://docs.bitnami.com/virtual-machine/components/apache/#how-to-install-the-certbot-client-for-the-lets-encrypt-certificate-authority
ディスカッション
コメント一覧
はじめまして
GCP上にWordpressをインストールし、Webサイトを作ろうとしていたところ、
こちらのサイトを拝見しております。
CUIが疎く、レベルの低い質問で申し訳ございませんが、以下のコマンドから
エラーが発生しております。
■コマンド
sudo apt-get install certbot python-certbot-apache -t jessie-backports
■エラー内容
The value ‘jessie-backports’ is invalid for APT::Default-Release as such a release is not available in the sources
何か足りていない印象を受けますが、こういった場合、次のアクション(コマンドレベルで)はどうすれば
よいのかおしえていただけますでしょうか?
以上、よろしくお願い致します。
MOさん
はじめまして。
Feedbackありがとうございます。
質問に対することは本文に書いておきました。
ご確認してみてください。
早速のご対応、誠にありがとうございます。
おかげさまで、SSLの設定が完了いたしました。
感無量です。
お役に立ったようで何よりです。
Wordpressに関することもちょくちょく書いているので気が向いたらまた来てみて下さい。
はじめまして!
非常にたすかっております。
ありがとうございます。
SSLサーバー証明書取得についてですが、
以下のような認証失敗のエラーがでます。
The following errors were reported by the server:
Domain: XXXXXXX
Type: unauthorized
Detail: Invalid response from
http://XXXX.com/.well-known/acme-challenge/JXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[XXXXXXXX]: “\r\n403
Forbidden\r\n\r\n403
Forbidden\r\nnginx/1.16.0</ce"
どのように対応していけばよろしいでしょうか?
ご教授いただけると幸いです。。。宜しくお願いいたします。
Challengeに失敗していますね。
ブログに書いた通りのことをしてみたところこちらでは再現しなかったので、サーバーの状態を見れない限り原因が分かりません。
パッと思いつくことで言うと、Domain関連の設定、又はそのコマンドが正常に実行されてないかなと思います。
Domain関連のところを一度見直してみては如何ですか?