WordPressのセキュリティ向上-管理画面のHTTPS化 ~AWSで作るWordPress~ Part.5

WordPressはインストールしたばかりでは、外部の攻撃に非常に弱いです。
特に記事の更新をしている管理画面はデフォルトではHTTPでの通信となっているためIDパスワードが暗号化されずにインターネットへと流れています。

ここではWordPressのHTTPS化についてご説明します。

※以下で説明しているプログラムについてはインストールしてある前提でご説明しております。

EC2のサーバにWordPressをインストールしてみよう ~AWSで作るWordPress~ Part.4
AWSのAmazonのEC2にてWordPressの構築をまとめる。 内容は基本コピペで構築できる。 EC2のサーバにWordPre...
スポンサーリンク

SSL証明書を作成する。

以前SSL証明書について説明したが、それにのっとりSSL証明書を発行してみる。

以下のコマンドで秘密鍵とCSR(証明書の要求書)を作成する。

cd /var/tmp/
openssl ecparam -out private.key -name prime256v1 -genkey
openssl req -new -key private.key -out request.csr

CSR発行時の設定については以下の記事で説明しているためそこを参照してください。
http://www.neteng.co/?p=231

通常ここで作成したCSRをベリサインなどの証明書発行局へ送付し、SSL証明書を発行してもらうのだが。
ここでは自己署名による証明書の発行する。

openssl x509 -days 3650 -req -signkey privatekey.key < request.csr > server.crt

これで証明書の発行が完了した。ここで作成したものは以下の三つです。

  1. private.key
    SSLサーバ証明書に紐付く秘密鍵
  2. request.csr
    SSLサーバ証明書を発行するための要求書
  3. server.crt
    SSLサーバ証明書

1と2を証明書と秘密鍵の格納フォルダに移動させます。

cp private.key /etc/pki/tls/private/
cp server.crt /etc/pki/tls/certs/

 SSL_MODの設定変更

SSL_MODのセキュリティはここを参照して設定する。
http://www.neteng.co/?p=176

テキストエディタにてSSL_MODの設定ファイルを開く。

emacs /etc/httpd/conf.d/ssl.conf

セキュリティを高めるために使用する暗号プロトコルの制限。

SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2

セキュリティを高めるために使用する暗号スイートを制限。

SSLCipherSuite ECDH+AES256:RSA+AES128:ECDH+AES128:+SHA:+SHA256:!aNULL

先ほど作成したSSLサーバ証明書を指定。

SSLCertificateFile /etc/pki/tls/certs/server.crt

先ほど作成した秘密鍵を指定。

SSLCertificateKeyFile /etc/pki/tls/private/private.key

設定を保存

Ctrl+x Ctrl+s
Ctrl+x Ctrl+c

WordPressにて管理画面のHTTPSを強制にする。

管理画面にてHTTPSの接続を強制にする設定を追加する。

emacs /var/www/html/wp-config.php

21 管理画面へのログインにHTTPSを強制する
22 管理画面のページをHTTPSに強制する。

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

設定を保存する。

Ctrl+x Ctrl+s
Ctrl+x Ctrl+c

Apacheのサービスを再起動する。

service httpd restart

設定完了と確認

実際にサイトにアクセスしログインを押してみる。

WS000025

自己証明書のため、証明書のエラーがでる。このサイトの閲覧を続行する。をクリック

WS000026

HTTPS化されたログインページにアクセスできる。
HTTPS化されたことによってIDやパスワードの流出を防ぐことができる。

WS000027

ログイン後についても。証明書のエラーはでたままだが、HTTPSで通信することができる。

WS000028

最後に

管理系のHTTPS化は必須といってもいいほど大切なことです。
サーバのID/PASSが流出してしまうと、サイトを荒らされてウィルスを仕掛けられたりするので必ず行いましょう。
質問やご指摘はコメント欄にて受け付けております。