Google ChromeのアップデートによってSSL対応していないページは「保護されていません」とつくようになりました。
「保護された」とつかないだけならまだしもこれは少し見栄えが悪い。
Let’s Encryptを使ってWordPressをhttps対応したのでメモを残します。
AWS Lightsailを使っている場合は基本Bitnamiになると思います。
なので公式ドキュメントをみながら行いました。
証明書作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//準備(バージョンは最新のものに合わせる) cd /tmp curl -s 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_v1.0.1_linux_amd64.tar.gz sudo mv lego /usr/local/bin/lego //サービス停止 sudo /opt/bitnami/ctlscript.sh stop //途中Do you accept the TOS? Y/nと聞かれる sudo lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/etc/lego" run //ファイル置き換えと権限設定 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 //※以下2つのDOMAINは自分のドメインに書き換える 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* //サービス再開 sudo /opt/bitnami/ctlscript.sh start |
アドレス変更
サイトアドレス設定を変更します。
管理画面から変更できなくなっていたので
/opt/bitnami/apps/wordpress/htdocs/wp-config.php
を以下の部分を書き換えました。
1 2 3 4 5 |
define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/'); define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/'); ↓ define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/'); define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/'); |
記事の書き換え
Search Regexというプラグインを使って記事内リンクを変更します。
リダイレクト
http://xxx でアクセスしてきたときに https://xxx にリダイレクトさせます。
1 2 3 4 5 6 7 8 9 |
sudo vi /opt/bitnami/apps/wordpress/conf/httpd-prefix.conf /* ここから3行を追加 */ RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L] /* ここまで */ sudo /opt/bitnami/ctlscript.sh restart apache |
所感
今更ですがSSL対応です。
やってみると簡単でしたがとっつきにくい印象は変わらず。
とりあえず1年有効みたいなので1年後にこの記事を見て思い出せれば幸いです。
追記:証明書更新自動化
よく見たらcronを使った自動化もあったので追記します。
1 2 3 4 5 6 7 8 |
sudo vi /etc/lego/renew-certificate.sh //以下を書き込む #!/bin/bash sudo /opt/bitnami/ctlscript.sh stop apache sudo lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/etc/lego" renew sudo /opt/bitnami/ctlscript.sh start apache |
これで更新用の実行シェルができたのでcronに登録します。
1 2 3 4 5 6 |
//cronを編集モードで開く sudo crontab -e //以下のような行を追加(これは毎月1日のAM3時に更新) //date コマンド等でPCの時刻を確認して都合の良い時間に変える 0 3 1 * * /etc/lego/renew-certificate.sh 2> /dev/null |
追記:challenge
新しいバージョンでrenewを試したところこんなエラーが出ました。
No challenge selected. You must specify at least one challenge: ‘–http’, ‘–tls’, ‘–dns’
所有確認方法をオプションで書けってことだと思います。
--http
オプションを追加することで問題なく実行できました。