let’sencriptが正式サービスになったので常時SSLにしてみた

ここは自分のサーバー管理とWordPress学習用にさくらのVPS512プランで立ち上げたサイトで1年間CentOS6,Apache,WordPressの構成で運用というか放置していました。
SSL/TLS証明書を無料で取得できるLet’s Encriptが2016年4月12日に正式サービスが開始したのでCentOS7,nginx環境に移行するついでに常時SSLにしてみた記録ですよ。

動機

サーバーの管理を学習しようと立ち上げたこのサイト。他のネタを仕込むのに夢中で本来の目的を忘れていたけど、軌道修正。
CentOS7の登場が2014年だから、そろそろ移行しないと世間に遅れてしまうし。

アップグレードツールは?

CentOS in-place upgrade tool is broken,
please don’t use this in your production server!

In Place Upgrade CentOS 6.5 to 7.0 using preupg

なんか怖いことが書いてある。

それはとにかく旧サイトのバックアップから

WordPressは管理画面からexport-wordpress

wp-content内のアップロードファイルはsftpでローカルにバックアップしておく

やっぱりアップグレードツールでこける

% sudo preupg

Preupg tool doesn't do the actual upgrade.
Please ensure you have backed up your system and/or data in the event of a failed upgrade
 that would require a full re-install of the system from installation media.
Do you want to continue? y/n
y
Gathering logs used by preupgrade assistant:
All installed packages : 01/11 ...running         finished (time 00:02s)
All changed files      : 02/11 ...running         finished (time 02:08s)
Changed config files   : 03/11 ...running         finished (time 00:00s)
All users              : 04/11 ...running         finished (time 00:00s)
All groups             : 05/11 ...running         finished (time 00:00s)
Service statuses       : 06/11 ...running         finished (time 00:00s)
All installed files    : 07/11 ...running         finished (time 00:03s)
All local files        : 08/11 ...running         finished (time 00:12s)
All executable files   : 09/11 ...running         finished (time 00:12s)
RedHat signed packages : 10/11 ...running         finished (time 00:00s)
CentOS signed packages : 11/11 ...running         finished (time 00:00s)
Assessment of the system, running checks / SCE scripts:
001/096 ...running (Configuration Files to Review)                                       done    (Configuration Files to Review)

長いので省略

096/096 ...running (NIS server config file back-up)                                        done    (NIS server config file back-up)
Assessment finished (time 03:06s)
I/O warning : failed to load external entity "/usr/share/openscap/xsl/security-guide.xsl"
compilation error: file /usr/share/preupgrade/xsl/preup.xsl line 40 element import
xsl:import : unable to load /usr/share/openscap/xsl/security-guide.xsl
I/O warning : failed to load external entity "/usr/share/openscap/xsl/oval-report.xsl"
compilation error: file /usr/share/preupgrade/xsl/preup.xsl line 41 element import
xsl:import : unable to load /usr/share/openscap/xsl/oval-report.xsl
I/O warning : failed to load external entity "/usr/share/openscap/xsl/sce-report.xsl"
compilation error: file /usr/share/preupgrade/xsl/preup.xsl line 42 element import
xsl:import : unable to load /usr/share/openscap/xsl/sce-report.xsl
OpenSCAP Error:: Could not parse XSLT file '/usr/share/preupgrade/xsl/preup.xsl' [oscapxml.c:416]
Unable to open file /root/preupgrade/result.html
Usage: preupg [options]

preupg: error: [Errno 2] No such file or directory: '/root/preupgrade/result.html'
%

In Place Upgrade CentOS 6.5 to 7.0 using preupgだからかな。これはCentOS6.8だし。
過去は忘れよう。

面倒だからVPSの管理画面からCentOS7を新規インストールする

カスタムOSインストールガイド – CentOS7 / ScientificLinux7 / Fedora 24
この通りにする。最初の起動は時間がかかるけど焦らずに待つ。

CentOS Linux 7 (Core)
Kernel 3.10.0-327.22.2.el7.x86_64 on an x86_64

インストール中にユーザーを追加しておいたので
rootログイン禁止,鍵認証有効,パスワードログイン禁止などをやっておく。

インストール

nginx インストール

$ sudo yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo yum install nginx

php-fpm インストール

$ sudo yum install php-fpm

/etc/php.ini を編集する

これを

;date.timezone =

こう

date.timezone = "Asia/Tokyo";

/etc/php-fpm.d/www.conf を編集する

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

起動

$ sudo systemctl start nginx
$ sudo systemctl start php-fpm

WordPressインストール

「サーバーってなに?」~初心者でもよくわかる!VPSによるWebサーバー構築講座(1)
この通りのCentOS6, Apache, Mysql, WordPress構成は前回すでにやっているので,今回はCentOS7, nginx, mariaDB, WordPressとなるだけと侮っていたら,
うまくいかない。こんなのがerror-logに大量に残る

2016/08/04 07:17:44 [error] 4429#0: *6 "/var/www/index.html" is forbidden (13: Permission denied), client: 180.9.194.76, server: ak1211.com, request: "GET / HTTP/1.1", host: "ak1211.com"
2016/08/04 07:17:59 [error] 4429#0: *6 "/var/www/index.html" is forbidden (13: Permission denied), client: 180.9.194.76, server: ak1211.com, request: "GET / HTTP/1.1", host: "ak1211.com"
2016/08/04 07:18:46 [error] 4469#0: *1 "/var/www/index.html" is forbidden (13: Permission denied), client: 180.9.194.76, server: ak1211.com, request: "GET / HTTP/1.1", host: "ak1211.com"
2016/08/04 07:19:23 [error] 4489#0: *1 "/var/www/index.html" is forbidden (13: Permission denied), client: 180.9.194.76, server: ak1211.com, request: "GET / HTTP/1.1", host: "ak1211.com"
2016/08/04 07:21:09 [error] 4489#0: *2 "/var/www/index.html" is forbidden (13: Permission denied), client: 180.9.194.76, server: ak1211.com, request: "GET / HTTP/1.1", host: "ak1211.com"

Permission deniedだからとファイルとディレクトリのpermissionを何度確認しても問題ない。
イライライライラ

いいかげん熱くなってきたので頭を冷やそう

こんなサイト自分とBaiduspiderとかGooglebotくらいしか見ていないから何時間落ちていても問題ないだろと開き直る。

エアコンをインストール

**in・stall,
in・stal / Instɔ´ːl, ((米+))-stɑ´ːl /
(変化形の発音 installs ,installed ,installing ,instals ,instaled ,instaling )
【原義:中に(in)置く(stall)】
━━[動] (~s / -z / ;~・ed / -d / ;~・ing)
━(他)
❶ [SVO]〈設備・装置など〉を〔場所に〕に取り付ける, 据え付ける, 設置する〔in〕《◆put in より堅い語》
▷ I must have an air conditioner installed in the house.
エアコンを家に付けねばなるまい.

ジーニアス英和辞典 第5版

エアコンを家に付けねばなるまい.

暑いのは古いエアコンの効きが悪いせいだから, 冷房能力4.0kWのエアコンが丁度あったのでインストールを始める。

  1. 古いエアコンの撤去
  2. 取り付ける位置の確認
  3. 背面金物(バックハンガー取り付け)
  4. 冷媒銅管の切断
  5. 銅管カッターは内面にバリが出るので銅管のバリ取りAC-install01
  6. ナットを銅管に通してフレア加工AC-install02AC-install03
  7. フレア部にナイログを塗ってトルクレンチで適正トルクで締め付けるAC-install04AC-install06AC-install05
  8. 内外接続電線をストリップAC-install07
  9. 内外接続電線を差し込むAC-install08
  10. 室外機の方でも同じ事をする
  11. 冷媒が入ってなかったので(新品でないから),2方弁3方弁全開で真空引き
  12. R410A冷媒を1.45kg量りながら入れる。AC-install09
  13. 完了AC-install10

SELinux が余計なことをしていた

# getenforce
Enforcing
# setenforce 0
# getenforce
Permissive

はい、これであっさり解決。
でも Permissive にしておくと負けた気分なので

# setenforce 1
# getenforce
Enforcing
# chcon -Rt httpd_sys_content_t /var/www

これで Enforcing でもOK
それから

# semanage fcontext -a -t httpd_sys_content_t "/var/www(/.*)?"
# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wordpress/wp-content(/.*)?"
# restorecon -R -vv /var/www/
# ll -Z /var/www
drwxr--r--. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 html
drwxrwxr-x. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 wordpress

よくわからんがこうしておいたら動いた。

WordPress をバックアップからリストアする

WordPress公式のインポートツールでローカルから戻す
ローカルにバックアップしておいたwp-content内のアップロードファイルはsftpで元に戻す
restoreconしておく

フルSSLへ

Let’s Encrypt で手軽に HTTPS サーバを設定する
の通りにすませた。

$ git clone https://github.com/letsencrypt/letsencrypt.git
$ ./letsencrypt-auto certonly --webroot --webroot-path ~/ak1211.com -d ak1211.com

過去の投稿のhttp://を//に置き換える

プラグインを使ったらいいみたいだけど、今回は手作業でコツコツと

firewalldの設定は?

$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 木 2016-08-04 03:15:09 JST; 1 weeks 1 days ago
 Main PID: 619 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─619 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

$ sudo firewall-cmd --list-services --zone=public  --permanent
dhcpv6-client http https ssh

何かした覚えはないけど動いてるからいい

SSL Server Test

SSL-test

最後に

httpsのサイトをGoogleサーチコンソールに登録しておく。
PageSpeed Insightsで
サーバーの応答時間を短縮するが出てくる。
メモリ512MでフルSSL化は無理があったかも。

One thought on “let’sencriptが正式サービスになったので常時SSLにしてみた

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください