nginxで証明書を導入してhttpsでアクセスする

nginxにグローバルサインで取得した
クイック証明書を組み込んだときの設定方法です。

OS: Linux (ubuntu12.10)
Webサーバ: nginx1.2.2

証明書のためのKeyファイルを作成する

httpsを利用したいサーバで作業を行ってkeyファイルとCSRファイルを作成。


nginxの設定ディレクトリの中にssl関連のファイルを格納します。(適度に変更してください)


$ mkdir /etc/nginx/ssl

読み込み時にパスワードを必要にしない場合


$ sudo openssl genrsa -out 2013.xxx.hoge.com.key 2048

読み込み時にパスワードを必要にする場合


# openssl genrsa -des3 -out ./ssl.key/xxxxxxx.key 2048
enter password[]: xxxxxxx
retype password[]: xxxxxxx

こんなファイルができているはず


$ ls
2012.xxx.hoge.com.key

keyファイルをもとにcsrを生成する


# openssl req -new -key 2013.xxx.hoge.com.key -out 2013.xxx.hoge.com.pem

Country Name   (2 letter code) [AU]: JP (国名)
State or Province Name (full name) [Some-State]: Iwate (とりあえず県)
Locality Name (eg, city) []: Morioka-shi (とりあえず市)
Organization Name (eg, company) [Internet Widgits Pty Ltd] : hogehoge.inc (会社名)
Organization Unit Name  (eg, section) []: hoge-ka (部署名)
Common Name (eg, YOUR name) []: xxx.hoge.com (利用するURL)
Email Address  - スキップ
A challenge password  - スキップ
An optional company name  - スキップ

グローバルサインの証明書発行ページ(GSページ)

メニューからたどって証明書を発行するフォームに移動

  1. サーバ証明書管理 ➡ 証明書発行
  2. クイック認証
  3. コモンネームオプション 無し

こんな感じで次のページの技術者情報もぽちぽち選択していく。

CSRの中身をフォームに入力

CSR入力フォームが現れるので先ほど作成したCSRの中身をフォームにコピペで貼付ける

その後に支払い情報まで入力するとドメインの管理者にメールが飛んできます。

証明書(crt)と中間証明書(pem)をくっつけてnginxに設定


$ cat 2013.xxx.hoge.co.jp.crt 2013.ca.geotrast.xxx.hoge.crt > 2013.xxx.hoge.co.jp.pem


server {
        listen 443 default ssl;
        server_name xxx ;
        ssl on;
        ssl_certificate_key /etc/nginx/ssl.key/2013.xxx.hoge.co.jp.key;
        ssl_certificate /etc/nginx/ssl.key/2013.xxx.hoge.co.jp.pem;

        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;

...

再起動


$ sudo service nginx restart

https://xxx.hogehoge.co.jp でアクセスできればokです。