訳あって最新版にできない Ubuntu10.04に Let’s Encrypt (dehydrated)を入れるためのメモ
前段階として、Ubuntu10.04 を update しておく。
それから、openssl と curl を TLS1.2対応にする。
# vim /etc/apt/sources.list
jp.archive –> old-releases
security –> old-releases
# apt-get update
# apt-get -y upgrade openssl
# apt-get -y upgrade curl
# cd
# wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
# tar xvfz openssl-1.0.2o.tar.gz
# cd openssl-1.0.2o
# ./config –prefix=/usr –openssldir=/usr/share/ssl shared
# make
# make test
# make install
# apt-get -y upgrade openssl
# cd
# wget http://curl.mirror.anstey.ca/curl-7.58.0.tar.bz2
# tar xf curl-7.58.0.tar.bz2
# cd curl-7.58.0
# ./configure –enable-libcurl-option –with-ssl=/usr –prefix=/usr
# make
# make test
# make install
# apt-get -y upgrade curl
# curl -V
# curl https://login.starbucks.co.jp/login
最後のスタバのログイン画面は TLS1.2でアクセスできたかどうかの確認。
Let’s Encrypt を入れるために、推奨されているのは Certbot なんだけど、python2.7 が必要だったり、Ubuntu10.04 にはいろいろ足りないものが多くて断念。
同じ機能(Certbot互換)の dehydrated でやってみる。(もちろんできたからこれを書いているんだけど)
git clone や wget でSSLエラーが出るので、tar.gzを取ってきて解凍。
あと、いろいろ面倒なので、root で作業。(よい子はマネしないように)
# curl -kLO https://github.com/lukas2511/dehydrated/releases/download/v0.6.2/dehydrated-0.6.2.tar.gz
# tar xf dehydrated-0.6.2.tar.gz
# cd dehydrated-0.6.2
# cp docs/examples/config config
# vim config # configのWELLKNOWNのコメントを外す
WELLKNOWN=”/var/www/dehydrated”
# mkdir /var/www/dehydrated
# chmod 755 /var/www/dehydrated
# vim /etc/apache2/conf.d/dehydrated.conf
Alias /.well-known/acme-challenge /var/www/dehydrated
<Directory /var/www/dehydrated/>
</Directory>
# これがないと怒られる。
# service apache2 restart
# apache2を再起動させないで「./dehydrated -c –accept-terms」をやるとエラーになります。
+ Challenge validation has failed 🙁
ERROR: Challenge is invalid! (returned: invalid) (result: {
“type”: “http-01”,
“status”: “invalid”,
“error”: {
“type”: “urn:ietf:params:acme:error:connection”,
“detail”: “Fetching http://hogehoge.com/wp-signup.php?new=hogehoge.jp: Error getting validation data”,
“status”: 400
},
ERROR: Challenge is invalid! (returned: invalid) (result: {
“type”: “http-01”,
“status”: “invalid”,
“error”: {
“type”: “urn:ietf:params:acme:error:unauthorized”,
“detail”: “Invalid response from http://hogehoge.jp/.well-known/acme-challenge/13oQnXoFMzKWEXdSXmavt-UTcW7CS_CD-UlQ9L_nhtY: \”\u003c!DOCTYPE html\u003e\r\n\u003chtml dir=\”ltr\” lang=\”ja\”\u003e\r\n\u003chead\u003e\r\n\u003cmeta charset=\”UTF-8\” /\u003e\r\n\u003ctitle\u003eNothing found for Well-known Acme-challe\””,
“status”: 403
},
# vim domains.txt
hogehoge.com www.hogehoge.com
# 必要なサブドメインはすべて書く。ワイルドカードも使えるらしいが怖くてテストしてない。
# 最初に書いたドメインでディレクトリが作られる。
# ./dehydrated --register --accept-terms
# ./dehydrated -c --accept-terms
# 最初の1回だけアカウントが作られる。
# domain.txt に書かれたドメインの証明書を取ってくる。
# 更新の都合もあるので、domain.txt にはすべてのドメインを書いておく。
# 更新の必要がなければ、スキップされる。
$ vim /etc/apache2/sites-available/default-ssl
<IfModule mod_ssl.c>
NameVirtualhost *:443
<VirtualHost *:443>
ServerName hogehoge.com
ServerAlias www.hogehoge.com
DocumentRoot /www/wp/
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
SSLEngine on
SSLCertificateFile /hoge/dehydrated-0.6.2/certs/hogehoge.com/fullchain.pem
SSLCertificateKeyFile /hoge/dehydrated-0.6.2/certs/hogehoge.com/privkey.pem
SSLCertificateChainFile /hoge/dehydrated-0.6.2/certs/hogehoge.com/chain.pem
</VirtualHost>
# apache のバーチャルホストの書き方。
$ vim /www/wp/.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.|ww2\.|wp\.)?hogehoge\.com$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# http を https へリダイレクト。
$ service apache2 restart
# apache をリスタート。
毎月1日と15日に更新チェック
$ crontab -e
0 3 1,15 * * /root/dehydrated-0.6.2/dehydrated –config /root/dehydrated-0.6.2/config –cron >> /tmp/ssl-update.log 2>&1
JetpackのCDNはOFFに
WP TipsWordPressの引っ越し話でのことなんですが、Jetpack機能がインストールされているサイトを移すと画像が全滅!
ちょっと特殊なテンプレートを使っていたせいもあって、原因がすぐにはわからずプチパニック!
ちゃんと調べたら、JetpackのCDN機能がONになっていたせいでした。
どういうものかというと、画像ファイルのURLが i?.wp.com というような URLに書き換えられるものです。
http://i2.wp.com/hogehoge.com/wp-content/uploads/2018/05/hogehoge.jpg?resize=400%2C300
引っ越ししてテストしている最中のサイトの場合、旧サイトが DNS上では生きていて(httpsはダメな状態)、
テスト環境では、新サイト(httpは httpsへリダイレクト)が見えているわけですが、Jetpackの CDNが
画像を引っ張ってこようとする先は旧サイトで、アクセスは httpsで取ってこようとするので、取れないという感じ
になるわけです。
それ以外にもデメリットがあるそうなので列挙。
1.キャッシュを削除できない(上書きNG)
2.他の画像処理系のプラグインと相性が悪い
3.CDNが効くのはデータベース経由でリンクされている画像のみ
4.画質が劣化する
1と4が致命的ですね。
ということで、Jetpackを入れた場合、設定 > 執筆 > 画像を私たちのサーバーから提供 > OFF
にしておきましょう。
WordPressのサイトを丸ごと引っ越し
WP Tips, サーバ管理いろいろ訳あって、WordPressのサイトを丸ごと別のサーバーへ移すことになりました。
また訳あって、現在のサーバーには、http(80)はアクセスできますが、その他ポートがすべて塞がれています。
SSH(22)も FTP(21)も https(443)も全部です。
そういう環境で、まずは WordPressの環境を丸ごとバックアップしなければなりません。
WordPressには、Duplicatorという優秀なプラグインがあります。
Duplicator – WordPress Migration Plugin(作成者: Snap Creek)
これをまず入れます。
有効化したら、すべてそのままで実行します。
大抵1か所くらいは Noticeが出ると思いますが、そのまま使うわけではないので、詳細はパスです。
Duplicator > Create New > Next > Yes. Continue with the build process! > Build
もしファイルが大きくてエラーになる場合は、まず、Databaseのみバックアップします。
Duplicator > Create New > Files > Archive Only the Database >・・・> Build
次に画像ファイル以外を取ります。
Duplicator > Create New > Files > Enable File Filters > [wp-uploads] >・・・> Build
画像ファイルは、Website Explorer(WordPressのプラグインではない)でバックアップします。
Website Explorer > ツール > フォルダ・ダウンロード
すべてのバックアップが終わったら、Archiveファイルをダウンロードします。
この中に大切なものが全部入っています。
新しい方のサーバーに WordPressを入れておきます。
Amimotoを使っている場合は、wp-setup hogehoge.com でいいでしょう。
入れ物だけが必要です。(すでに入っている場合は消しておきましょう)
# rm /opt/local/hogehoge.com.json
# rm /opt/local/createdb-hogehoge.com.sql
# mysql -u root -p
drop database hogehoge_com;
# wp-setup hogehoge.com
ACM(Amazon Certificate Manager)で、*.hogehoge.com(別名で hogehoge.comも登録しておくこと)を取ってる場合は、ロードバランサーのリスナー(証明書)に追加しておきます。
また、テスト段階では、hostsに ロードバランサー(の片方)の URLを登録しておきましょう。(下の例では 1.1.1.55)
# vim C:\Windows\System32\drivers\etc\hosts
1.1.1.55 hogehoge.com
1.1.1.55 www.hogehoge.com
http://hogehoge.com にアクセスすると、WordPressインストールが始まるはずなので、EC2のインスタンスコードを入れて進めます。
WordPressシステムの更新やプラグイン、テーマなどを最新にします。
それから先ほど取ったバックアップファイルから手動で必要なファイルを FTPでコピーします。
/wp-content/themes/
/wp-content/plugins/ (標準でインストールされなかったものだけ)
/wp-content/uploads/
※ Website Explorerで画像のバックアップを取った場合は、PC環境で使われているファイルのみ保存されていますので、スマホは小さいサイズの画像を使うようなテンプレートの場合は、Regenerate Thumbnails などのプラグインでサムネイル画像の再構成をしておいた方がいいでしょう。
念のため、mysqldump でこの時点のバックアップを取っておきます。
# mysqldump -u root -p -h localhost hogehoge_com > hogehoge_com.sql;
さて、Archiveファイルの database.sql を書き換えます。
必ず修正するところは2か所だけ。(ここを書き換えないとリダイレクト地獄になります)
INSERT INTO `wp_options` VALUES (1,’siteurl’,’https://www.hogehoge.com’,’yes’);
INSERT INTO `wp_options` VALUES (2,’home’,’https://www.hogehoge.com’,’yes’);
あとは、httpを取るか、httpsに書き換えます。
http://hogehoge.com/wp-content/uploads/ ⇒ /wp-content/uploads/
http://hogehoge.com/ ⇒ https://hogehoge.com/
保存したファイルを FTPでアップして(とりあえず db1.sqlに保存)、mysqlで実行します。
# mysql -u root -p
use hogehoge_com;
source /var/www/vhosts/hogehoge.com/db1.sql;
で、新しいサーバーにまったく同じサイトが構築できました。
Route 53 の Alias Targetを書き換えて完了です。
テストで書き換えた hostsも戻すのを忘れずに。
Ubuntu10.04 に Let’s Encrypt (dehydrated)を入れる
Tips訳あって最新版にできない Ubuntu10.04に Let’s Encrypt (dehydrated)を入れるためのメモ
前段階として、Ubuntu10.04 を update しておく。
それから、openssl と curl を TLS1.2対応にする。
# vim /etc/apt/sources.list
# apt-get update
# apt-get -y upgrade openssl
# apt-get -y upgrade curl
# cd
# wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
# tar xvfz openssl-1.0.2o.tar.gz
# cd openssl-1.0.2o
# ./config –prefix=/usr –openssldir=/usr/share/ssl shared
# make
# make test
# make install
# apt-get -y upgrade openssl
# cd
# wget http://curl.mirror.anstey.ca/curl-7.58.0.tar.bz2
# tar xf curl-7.58.0.tar.bz2
# cd curl-7.58.0
# ./configure –enable-libcurl-option –with-ssl=/usr –prefix=/usr
# make
# make test
# make install
# apt-get -y upgrade curl
# curl -V
# curl https://login.starbucks.co.jp/login
最後のスタバのログイン画面は TLS1.2でアクセスできたかどうかの確認。
Let’s Encrypt を入れるために、推奨されているのは Certbot なんだけど、python2.7 が必要だったり、Ubuntu10.04 にはいろいろ足りないものが多くて断念。
同じ機能(Certbot互換)の dehydrated でやってみる。(もちろんできたからこれを書いているんだけど)
git clone や wget でSSLエラーが出るので、tar.gzを取ってきて解凍。
あと、いろいろ面倒なので、root で作業。(よい子はマネしないように)
# curl -kLO https://github.com/lukas2511/dehydrated/releases/download/v0.6.2/dehydrated-0.6.2.tar.gz
# tar xf dehydrated-0.6.2.tar.gz
# cd dehydrated-0.6.2
# cp docs/examples/config config
# vim config # configのWELLKNOWNのコメントを外す
# mkdir /var/www/dehydrated
# chmod 755 /var/www/dehydrated
# vim /etc/apache2/conf.d/dehydrated.conf
# service apache2 restart
# vim domains.txt
$ vim /etc/apache2/sites-available/default-ssl
$ vim /www/wp/.htaccess
$ service apache2 restart
毎月1日と15日に更新チェック
$ crontab -e
WordPress> adminログインで2段階認証
WP TipsTechCrunchのこの記事「全世界のWordPressサイトに大規模攻撃; デフォルトのアドミンユーザ名’admin’がねらわれている」にドキッとした方も多いのではないだろうか。
弊社で管理しているサイトの90%はWordPressでできているといっても過言ではないので、正直他人事ではないです。
対策としてとれる方法は次の通り。(簡単順)
UPDATE wp_users SET user_login=’newuser’, user_nicename=’newusername’ WHERE ID=xxx;
そうしないと、ネットワーク管理者になれなくなる。
2番目の対策でやれば楽ちんなんだけど、今後adminだけの話ではなくなる可能性は十分あるので、今回は3番目の二段階認証でやってみることにします。まず、スマホ(Android)に AUTHYをインストール。iPhoneでもたぶん同じ。
スマホ(Android)で AUTHYが動くようになったら、PCでログイン。
AUTHYの「Api Key」が無事入手できたら、WordPressにプラグインを入れる。
※ 山本一郎氏がYahoo!に書くくらいだから、相当底辺まで広まったとみて、adminを変更する2番目の方法をとりました。
hotmailから拒絶を食らった場合の解決法
Tips@live.jpあてに転送したメールが届かないという相談がありました。
ログを調べてみると確かにブロックされてエラーになっています。
うちのサーバーIP(49.212.132.42)が丸ごとブロックされているみたいです。
どうやら、なんらかのアルゴリズムでスパム発信元認定されたみたいです。
同様の現象は OCNでもSO-NETでも起きているので、うちも大手並み扱いされるようになったかと放置しておいてもいいのですが、いやそれはよくないので、解決策を探しました。
https://support.msn.com/eform.aspx?productKey=edfsmsbl2&ct=eformts
このURLからIPアドレスを送ったら、ものの30分ほどで解除してくれました。表現的には『軽減済み』ですけどね。
同じくこの問題で困っている方、参考になさってください。
サイト紹介> ロングクライムケンネル
サイト紹介『ロングクライムケンネル』という湘南佐島なぎさの丘入口にあるペットショップのサイトのお手伝いをしています。
オーナーのHさんは意欲的な方で、ペットショップやペットホテルの経営という枠を飛び越えて、自分と同じスキルを持つ『ペットシッター』を全国で育てたいという夢を実現すべく、日夜がんばっていらっしゃいます。
サイトの文章を読んでいただけるとその雰囲気がおわかりになるかと思うのですが、一種独特な、でも犬に対する愛情にあふれた気持ちが伝わってくるのではないでしょうか。
サイトでは『ペットシッターさんの募集』や『ペットシッターさんの開業支援』に向けてのコンテンツを充実させていく予定です。ご期待ください。
また、現在はサイト・リニューアルオープン記念として、『AZドッグフード(アゼットドッグフード)』の10%OFFセールを開催中です。高品質で安全なドッグフードはこちらからお買い求めください。