無料SSLでよりセキュアなWordpressを公開する

· 4 min read
無料SSLでよりセキュアなWordpressを公開する

2014年にGoogle社は、SSL/TLS化された安全なWebサイトを、検索において優先的に順位を上げることを発表しました。

また2016年、ヤフー株式会社も、Yahoo! JAPANなど全てのサービスをSSL/TLS化することを発表しています。

以降、個人情報の入力画面だけではなく、全てのページでSSL/TLS通信を行う「常時SSL/TLS化」の需要は高まっているので、この流れに乗ってWordpressもSSL化してみました。

概要

今回はWEBブラウザ上で視覚的且つ簡単にSSLを取得できる「ZeroSSL」を利用したいと思います。

Free SSL Certificates and Free SSL Tools @ ZeroSSL – Zero cost SSL
https://zerossl.com/

ZeroSSLは、無料でSSLを取得できるLet's EncryptをWeb上で手軽に操作できるサイトです。

今回はこのサイトの利用方法についてまとめます。


手順

  1. ZeroSSLのサイトへアクセスし、「ONLINE TOOLS」を選択
  1. FREE SSL Certificate WizardのSTARTをクリック
  1. Details画面

左上に「Email」にメールアドレスを入力。入力は任意ですが、一応入れておきます。
右上の「Domains」はSSLを取得するドメインを入力します。入力するのはFQDNです。

  • HTTP verification
  • DNS verification
  • Accept ZeroSSL TOS
  • Accept Let's Encrypt SA (pdf)

の3つにチェックを入れて、右上の「NEXT」をクリック

  1. 「Include www-prefixed version too?(サブドメインにwwwをつけるか)」と聞かれ、今回は必要ないのでNoを選択
  1. しばらくすると右下にCSRが生成されますので、CSRコードをダウンロードするかクリップボードにコピーしてNEXTをクリック
  1. 左側に Account Key (Let's Encrypt Key – LE Key) が生成されます(更新時に必要らしい)
    同様にコピーして、NEXTをクリック
  1. Verificationとなりました。ここからサーバ作業になります。

対象のドメインのサーバへ記載されている文字列でテキストファイルを作成し、中身を「Text:」の中の文字列を記載します。

指定された場所:webroot/.well-known/acme-challenge/
ここではwebrootは hdserver.mydns.jp になるので

http://hdserver.mydns.jp/.well-known/acme-challenge/[File名]

でアクセスできる様にファイルを設置します。

# cd /usr/share/nginx/html
# mkdir -p .well-known/acme-challenge/
# vi [File名]    #Text:記載の文字列を入力する

ファイルをアップしたら、File:のファイル名リンク部分をクリックして、ファイルが正しく設置されたかを確認する。

Textで指定された内容が表示されればOK、右上の「NEXT」をクリックする。

  1. Your certificate is ready! のページが表示されれば成功です。

下へとスクロールすると上から「domain certificate」と「domain key」があるので、それぞれコピーして保存しておいてください。

生成されたキーは以下の4つ:

  • CSR
  • Account key (Let's Encrypt Key – LE Key)
  • domain certificate
  • domain key

不足していないか確認しておきましょう。


サーバ内で証明書の設置を実施

ここからはサーバ内での作業になります。
WEBサーバはNginxなので、それに準じて作業を進めます。
※予め取得した domain.crtdomain.keyをサーバへコピーしておきます。

1. root権限のみで読めるようにアクセス権と所有権を変更

# cd /etc/pki/tls/
# chmod 400 domain.crt
# chown root:root domain.crt

2. SSLの設定ファイルを作成

# vi /etc/nginx/conf.d/ssl.conf

以下を記載:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
server {
    listen 443;
    ssl on;
    server_name hdserver.mydns.jp;
    ssl_certificate /etc/pki/tls/certs/example_com_combined.crt;
    ssl_certificate_key /etc/pki/tls/private/example_com.key;

    location / {
        …
    }
}

3. 設定に誤りがないか検証

# /etc/init.d/nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4. reloadもしくはrestartで設定を反映

# /etc/init.d/nginx reload
nginx を再読み込み中: [  OK  ]

おしまい。


SSL通信や証明書に問題がないか、ブラウザで確認してみます。

簡単でしたね。
ただし、90日後に更新が必要なのでお気をつけください。。

参考サイト

nginx+OpenSSL:SSLサーバ証明書の設定
https://cspssl.jp/support/nginx/config.php

ZeroSSLでLet's Encryptしてコアサーバに
https://blog.macfeeling.com/archives/25241