WordPressのブログをSSL化しました
SSL化が当然になりつつある
SSL化していないサイトはGoogleでの順位が落ちたり、今度のChromeでは「危ないサイト」として警告表示されたりするらしく、もはやサイトのSSL化は必須事項になってきました。
そんなわけでうちのサイトもSSL化しました。
SSL証明書は無料
最近は、Let’s Encryptという無料でSSLを発行してくれるサービスがあります。有効期限は結構短めなのですが、期限切れになりそうになったら自動で更新する仕組みもあって特に不自由なく使えます。
だいぶ前にmastodonをインストールしたときにこのあたりの設定はしてしまって、既に具体的なやり方は忘れてしまったので割愛です😀
Nginx + Naxsiのバージョンではまる
NginxにちゃんとSSLの設定をしたつもりですが、httpsでアクセスするとなぜか以下のエラーがerror.logに大量に吐き出された。
2018/03/06 12:52:17 [alert] 8538#8538: worker process 9490 exited on signal 11
プロセスが落ちてるんだけど、ネットで調べると以下の記事がヒットした。
Site with SSL doesn’t work when Proxying to apache. – ndeploy – SysAlly
naxsiの古いバージョンのバグらしい😓
nginxとnaxsiの最新バージョンを落としてビルドし直した。
cd /usr/local/src/
sudo rm -fr naxsi
sudo rm naxsi-master.zip
sudo curl -fSL https://github.com/nbs-system/naxsi/archive/master.zip -o naxsi-master.zip
sudo unzip naxsi-master.zip -d naxsi
#最新バージョンを落としてきた。https://nginx.org/downloadから探した
sudo rm nginx.tar.gz
sudo rm -fr nginx-1.10.1
sudo curl -fSL https://nginx.org/download/nginx-1.13.9.tar.gz -o nginx.tar.gz
sudo tar zxfv nginx.tar.gz
cd nginx-1.13.9/
sudo ./configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/nginx/modules \
--add-module=../naxsi/naxsi-master/naxsi_src \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module=dynamic \
--with-http_perl_module=dynamic \
--with-threads \
--with-stream \
--with-stream_ssl_module \
--with-http_slice_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-http_v2_module
sudo make
sudo systemctl stop nginx
sudo make install
sudo systemctl start nginx
これでhttpsでアクセスすると画面は崩れはするもののSSLでページ表示できるようになった。
WordPressのリンクの書き換えはプラグインで
httpsでページは表示できたもののリダイレクト先がhttpに飛んだり、画像が表示されなかったりする。CSSも適用されない。
まず「Really Simple SSL」プラグインを入れるとデザインの崩れは直る。これ有効にすると管理画面が真っ白になって焦るが、またログインページからログインし直したらちゃんと動いた。
これでもまだ画像が表示されない。これは記事内でhttpから始まるアドレスを書いていたためで、「Search Regex」プラグインで「http://a-tak.com」を「https://a-tak.com」に一括置換して対応。
意外と簡単にSSL化できた
以上でうちのサイトのSSL化は完了した。
naxsiのバージョン問題でひっかからなけれぱ、かなり簡単に終わってたはず。これでSSL化の波に乗れて一安心です。