[さくらのVPS]nginx+wordpress管理画面のssl化

概要

wordpressの管理画面をsslで暗号化したいと思います。
用意する証明書は、いわゆるオレオレ証明書、独自に作った証明書になります。

管理画面ssl化の許可


wordpressの管理画面をssl化するときは、wordpressの設定ファイルも変更しなければなりません。
こちらに関してはwordpressのドキュメントがあります。

Administration Over SSL « WordPress Codex

参考

設定するファイルはwp-config.phpファイルになります。
ログイン画面だけsslを使用
[bash]
vim wp-config.php
define(‘FORCE_SSL_LOGIN’, true);
[/bash]
ログイン画面と管理画面をssl化
[bash]
vim wp-config.php
define(‘FORCE_SSL_ADMIN’, true);
[/bash]

証明書の作成


opensslのインストール

opensslコマンドを利用します。コマンドが見つからなかったらインストールしてください。
[bash]
sudo yum install openssl-devel
[/bash]

秘密鍵の作成

[bash]
openssl genrsa -out localhost.key -aes256 1024
[/bash]

CSR(証明書要求)の作成

CSR(Certification Signing Request) 証明書要求ファイルの作成です。
[bash]
openssl req -new localhost.key -out localhost.csr
[/bash]

自己証明書の作成

[bash]
openssl x509 -req -in localhost.csr -signkey localhost.key -out localhost.crt
[/bash]

パスフレーズの削除

webサーバーを再起動したときにパスフレーズを求められます。
そのためうまくサービスが起動できなくなってしまいます。

[bash]
openssl rsa -in localhost.key -out localhost.key
[/bash]
適宜ご自分の環境に会わせて変更してください。

nginxへ証明書を適用


[bash]
server {
listen 443;
server_name localhost;

location / {
root document_path;
index index.php index.html index.htm;
}

ssl_certificate localhost.crt;
ssl_certificate_key localhost.key;
ssl_session_timeout 10m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

if ($uri !~ ^/wp- ) {
rewrite ^(.*)?$ http://$host$uri last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
[/bash]

ssl関連の設定項目

設定項目 解説
ssl_certificate 証明書のパス指定
ssl_certificate_key 秘密鍵のパス指定
ssl_session_timeout sslセッションのタイムアウト指定
ssl_protocols sslのプロトコル指定
ssl_ciphers 暗号化方法の指定
ssl_prefer_server_ciphers サーバ側の暗号化方法を優先する設定

sslに関しては上記の様に設定。
またhttpでwp-loginにアクセスするとhttpsにリダイレクトする設定を追加。

[bash]
server {
listen 80;
server_name localhost;
……
rewrite ^/wp-login.php?$ https://$host$uri last;
……
}
[/bash]
以上、上記の設定で終わりです。
アクセスして確かめてみてください。

証明書作成の参考にさせて頂いたページ

自己証明書を作成してnginxで使う その1 | Tangerina.jp

openssl コマンド

nginxの設定で参考にさせて頂いたページ

WordPressログインページ暗号化(SSL通信) | 楽しく情報処理技術者試験