nginx で SSL 証明書を作成したときの手順

秘密鍵の生成

# cd /etc/ssl
# openssl sha1 /var/log/messages > rand.dat
# ls
openssl.conf rand.dat
# openssl genrsa -rand rand.dat -des3 2048 > 20101128_key_with_pass.pem              
66 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
.........................................................................................+++
............................................+++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
  1. SHA1ハッシュ値を利用して、秘密鍵作成のための擬似乱数の情報を生成する
  2. 擬似乱数ファイル(rand.dat)から、秘密鍵を生成し、トリプル DES を使い、2048 bit の秘密鍵を作成する
  3. パスワードを尋ねられるので、パスワードを登録する

秘密鍵からパスワードを抜く

サーバーそのものの再起動や nginx の再起動でもパスワードの入力を求められるので、秘密鍵からパスワードを抜いてしまう。

# openssl rsa -in 20101128_key_with_pass.pem -out 20101128_key.pem

CSR の生成

# openssl req -new -key 20101128_key.pem -out 20101128_csr.pem

登録者情報を入力する。

X.509 証明書の生成

# openssl x509 -in 20101128_csr.pem -req -signkey 20101128_key.pem -out 20101128.pem

秘密鍵と証明書を有効にする

秘密鍵と X.509 証明書は、nginx のディレクトリに保存するのではなく、シンボリックリンクを生成して nginx が参照できるようにする。

# ln -s /etc/ssl/20101128_key.pem /usr/local/etc/nginx/ssl/server.key
# ln -s /etc/ssl/20101128.pem /usr/local/etc/nginx/ssl/server.pem

そして、nginx.conf を適宜修正する。