Nginxでの中間証明書設定nginx

以下、自分用のメモです。ようやく自宅サーバーをWheezyにしてWebサーバーもApacheからNginxにして稼働し始めました。

ついでなので昨今Wordpressをターゲットにした攻撃が多いらしいので管理ページをSSL接続にしたいと考えていままでメールの証明書でお世話になっている Startssl でWEBサーバーの証明書も取得してみようと考えました。

Startsslでの作業はほかのサイトを参照してもらうとして、NginxでのSSLの設定です。

/etc/nginx/sites-available/Default なサンプルがあります。

————————–

# HTTPS server
#
server {
listen 443;
server_name localhost;
root html;
index index.html index.htm;
ssl on;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ =404;
}
————————–

あれ? Apacheだと証明書を指定するディレクティブは2つじゃないんだが?
で、色々と調べるとどうやら今のバージョンのNginxには中間証明書を指定するディレクティブはないようです。
実はこのサンプルの状態で設定して起動するとブラウジング環境によってはスンナリ表示されず、証明書の警告が出る場合があるようです。私のスマートフォンのデフォルトブラウザでも出ました。

じゃあどうする?

要はサーバー証明書と中間証明書を1つのファイルにマージして指定すればいいようです、なるほど!!
つまり・・・・
cat サーバー証明書 中間証明書 > マージした証明書

↑ こんなかんじです。
こうするとスマートフォンのブラウザでもスンナリ表示されました。

あとはadmin-sslとかのプラグインを追加して管理ページをSSL接続にできました!

しかし最近スパムコメントが多いです。Akismetで掲載される前に保留はされるんですが、記録される前に撥ねることはできないもんでしょうか? サーバーで海外IPとかを拒否すればいいのかな?