Manual
SSL鍵配置ディレクトリを作成
## root user
cd /etc/nginx
pwd
mkdir -p ssl/{work,key,cert}
chmod 700 ssl/key
DOMAIN_NAME='example.com'
echo $DOMAIN_NAME
乱数生成
##
## 鍵を作成するための乱数を生成する
##
cd /etc/nginx/ssl
dd if=/dev/urandom of=work/${DOMAIN_NAME}.rand count=1024 bs=1024
chmod 700 work/${DOMAIN_NAME}.rand
秘密鍵生成
##
## openssl genrsaコマンドでRSA形式の秘密鍵を生成
## 擬似乱数を渡して、2048bitで暗号化している
##
cd /etc/nginx/ssl
openssl genrsa -rand work/${DOMAIN_NAME}.rand -des3 2048 > key/${DOMAIN_NAME}.key
# 秘密鍵のパスフレーズを入力
ls -l key/${DOMAIN_NAME}.key
chmod 700 key/${DOMAIN_NAME}.key
CSR生成
##
## CSRとは、サーバ証明書への署名を認証局へ要求するための申請書のようなもの
## Certificate Signing Request
## CSR作成時に、コモンネーム(https通信したいドメイン名)や運営者情報などの入力を促される
## (各認証局に署名を依頼する場合、email, passwordなどの入力はemptyのままにしておくよう注意書きしている認証局が多い)
## CSRはここで入力した情報に加えて、さっき作った秘密鍵と対になる公開鍵情報も含まれている
##
cd /etc/nginx/ssl
openssl req -new -key key/${DOMAIN_NAME}.key -out work/${DOMAIN_NAME}.csr
# pass phraseは、先ほど設定した秘密鍵のパスを入力する
# 秘密鍵から公開鍵を算出するため、秘密鍵を指定する必要がある
# (秘密=>公開の特定は簡単、公開=>秘密の特定はほぼ不可能という暗号アルゴリズムの特性)
chmod 700 work/${DOMAIN_NAME}.csr
自己署名
cd /etc/nginx/ssl
openssl req -x509 -in work/${DOMAIN_NAME}.csr -key key/${DOMAIN_NAME}.key -out cert/${DOMAIN_NAME}.self.crt -days 3650
# 10年間有効な自己署名のサーバ証明書を作成
chmod 700 cert/${DOMAIN_NAME}.self.crt
パスフレーズ解除版の証明書作成する
cd /etc/nginx/ssl
openssl rsa -in key/${DOMAIN_NAME}.key -out key/${DOMAIN_NAME}.nopass.key
# 秘密鍵作成時に指定したパスフレーズを入力
chmod 700 key/${DOMAIN_NAME}.nopass.key
conf
server{}
ディレクティブ内に以下を記述して再起動.
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/nginx/ssl/cert/${DOMAIN_NAME}.self.crt;
ssl_certificate_key /etc/nginx/ssl/key/${DOMAIN_NAME}.nopass.key;
Environment
$yum list nginx
インストール済みパッケージ
nginx.x86_64 1:1.6.2-1.22.amzn1 @amzn-updates