2015年2月26日木曜日

WordPressのセキュリティ対策(2)

【4.SSL化】
サイトをSSL化することでパスワードの漏洩など防ぐことができます。
また、常時SSL化することでSEO効果があるそうです。
https://don2.net/sem/ssl-seo/

試しに自己証明書を作成してサイト全体をhttps接続にしたいと思います。

①OpenSSLのインストール
OpenSSLをダウンロードし解凍します。
# cd /usr/local/src/

# wget http://www.openssl.org/source/openssl-1.0.2.tar.gz

# tar xzf openssl-1.0.2.tar.gz


解凍したフォルダに移動し、インストールしていきます。
# cd openssl-1.0.2

# ./config

# make

# make install


これでOpenSSL自体のインストールが完了しました。

②自己証明書の作成
次に、専用のディレクトリを作成して自己証明書を発行していきます。
# mkdir /var/lib/ssl

# cd /var/lib/ssl


秘密鍵を作成します。
# openssl genrsa -out private.key -aes256 1024

Generating RSA private key, 1024 bit long modulus

........................++++++

................++++++

e is 65537 (0x10001)

Enter pass phrase for private.key:パスフレーズ

Verifying - Enter pass phrase for private.key:パスフレーズ


genrsa:RSA形式の秘密鍵を作成する
-aes128:128ビットのAES方式で暗号化する
1024:1024バイトの鍵を作成する

公開鍵を作成します。
# openssl req -new -key private.key -out server.csr

Enter pass phrase for private.key:パスフレーズ

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:JP

State or Province Name (full name) []:Tokyo

Locality Name (eg, city) [Default City]:Shinjuku

Organization Name (eg, company) [Default Company Ltd]:社名など

Organizational Unit Name (eg, section) []:所属部署など

Common Name (eg, your name or your server's hostname) []:ドメイン

Email Address []:スルー

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:スルー

An optional company name []:スルー


req:CSRファイルを作成する
-new:新規にCSRを作成する
-key 秘密鍵ファイル:秘密鍵のファイル名を指定する

デジタル証明書を作成します。
# openssl x509 -in server.csr -days 3650 -req -signkey private.key -out server.crt

x509:X509形式のデジタル証明書を作成する
-in CSRファイル:CSRファイル名を指定する
-days 日数:証明書の有効期限を指定する
-req:入力ファイルがCSRファイルであることを指定する
-signkey 秘密鍵ファイル:秘密鍵ファイルを指定する

③mod_sslの設定
ApacheでSSL暗号化通信を実行するにはmod_sslモジュールが必要です。

mod_sslモジュールがインストールされているか確認します。

# yum list installed mod_ssl

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

Could not get metalink https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=x86_64 error was

14: problem making ssl connection

 * base: ftp.iij.ad.jp

 * centosplus: ftp.iij.ad.jp

 * elrepo: ftp.ne.jp

 * epel: ftp.riken.jp

 * extras: ftp.iij.ad.jp

 * rpmforge: mirror.fairway.ne.jp

 * updates: ftp.jaist.ac.jp

Error: No matching Packages to list


インストールされていないようなので、インストールします。
# yum list install mod_ssl

インストールが完了すると/etc/httpd/conf.dにssl.confが生成されます。
秘密鍵とデジタル証明書を指定します。
# cd /etc/httpd/conf.d

# vi ssl.conf

SSLCertificateFile /var/lib/ssl/server.crt

SSLCertificateKeyFile /var/lib/ssl/private.key

Apacheを再起動します。
# /etc/init.d/httpd restart

④WordPress HTTPSの設定
最後にプラグインを使用してサイト全体をSSL化します。
WordPressの管理画面から「WordPress HTTPS」をインストールし、左メニューからHTTPSをクリックします。





















サイト全体をSSL化したいので
1.Force SSL Administration 管理画面をSSL設定
2.Force SSL Exclusively 個別ページにSSL設定
それぞれにチェックします。
3.URL Filtersで「/」を入力しルート以下でSSL通信を行うように設定します。

保存したらサイトを確認してみます。














オレオレ警告が出ていますが、SSL接続できていることが確認できました。
以上です。

0 件のコメント:

コメントを投稿