RapidSSLをさくらのVPSにインストールしてみた

今まで仕事で証明書のインストールや更新作業自体は数えきれないくらいやってますが、証明書自体は渡されたものばかりを使用していて購入したことがなかったので、購入してみました。
環境はさくらのVPS2G, Debian Squeeze, Nginx 1.2.3。
証明書はRapidSSLをディファインというところで購入しました。
会員登録及び証明書の購入をしてからの手順のメモです。
ディファイン合同会社

vhosts作成

  • vhosts設定ファイル作成

conf/conf.d配下の*.confを自動的に読み込むようにnginx.confで設定してます。

vi /usr/local/nginx/conf/conf.d/example.com.conf
server {
  listen 80;
  server_name example.com;
  root /usr/local/nginx/vhosts/example.com/html;

  access_log /usr/local/nginx/vhosts/example.com/logs/access.log main;
  error_log /usr/local/nginx/vhosts/example.com/logs/error.log info;
}
  • vhosts用ディレクトリ作成

確認用のhtmlをコピーしておきます。

mkdir -p /usr/local/nginx/vhosts/example.com/{html,logs,ssl.crt,ssl.key}
cp -pi /usr/local/nginx/html/index.html /usr/local/nginx/vhosts/example.com/html/.
  • Nginx再起動

Nginx再起動後にexample.comで確認用のhtmlが見れる事を確認しておきます。 (DNSのレコードは設定済みという前提です。)

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx

申請用CSR作成

  • 秘密鍵作成

webサーバ起動時にパスフレーズを聞かれない様にパスフレーズを削除しておきます。

openssl genrsa -out example.com.key -des3 2048
mv example.com.key{,.orig}
openssl rsa -in example.com.key.orig -out example.com.key

対話形式でサイト所有者の情報を入力します。

openssl req -new -key example.com.key -out example.com.csr

証明書発行申請

メールで証明書発行申請URLが送られてくるのでそこにアクセスしてCSRを貼り付けて認証形式を選んで管理者等の情報を入れて最後まで進めます。
今回は認証方式をファイルタイプにしましたので最後の画面でauth fileをダウンロードして対象のvhostsのドキュメントルートに設置します。
(/usr/local/nginx/vhosts/example.com/html)
しばらくするとメールで証明書が送られてくるのでテキストエディタに貼り付けてexample.com.csrとして保存しておきます。

中間証明書

中間証明書は以下からダウンロードします。
RapidSSL - Knowledge Center - SSL Certificates Support
今回はWebサーバがNginxなのでAll Other Web Server'sの中間証明書を証明書と同様にテキストエディタに貼り付けてcacert.crtとして保存しておきます。

証明書インストール

  • 証明書と中間証明書を連結して配置

保存しておいた証明書、中間証明書をサーバにアップロードしておきます。

cat example.com.crt cacert.crt > example.com.chaned.crt
cp -pi example.com.chaned.crt /usr/local/nginx/vhosts/example.com/ssl.crt/.
cp -pi example.com.key /usr/local/nginx/vhosts/example.com/ssl.key/.
  • SSL用のvhostsを追加
vi /usr/local/nginx/conf/conf.d/example.com.conf
server {
  listen 80;
  server_name example.com;
  root /usr/local/nginx/vhosts/example.com/html;

  access_log /usr/local/nginx/vhosts/example.com/logs/access.log main;
  error_log /usr/local/nginx/vhosts/example.com/logs/error.log info;
}

# 以下のvhostsを追加
server {
  listen 443 ssl;
  server_name example.com;
  root /usr/local/nginx/vhosts/example.com/html;

  access_log /usr/local/nginx/vhosts/example.com/logs/ssl_access.log main;
  error_log /usr/local/nginx/vhosts/example.com/logs/ssl_error.log info;

  ssl on;
  ssl_certificate /usr/local/nginx/vhosts/example.com/ssl.crt/example.com.chained.crt;
  ssl_certificate_key /usr/local/nginx/vhosts/example.com/ssl.key/example.com.key;

  ssl_session_timeout 5m;

  ssl_protocols SSLv2 SSLv3 TLSv1;
  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers on;
}
  • Nginx再起動
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx