VPS上のNginxサーバーにGeoTrustのQuickSSL Premiumを設定する方法

blog-img

概要

VPS上で動くNginxサーバーにGeoTrustのQuickSSL Premiumを設定する。
試験環境ではVPSにCentOSを利用。
GeoTrustのQuickSSL Premiumは日本ではなくアメリカのサイトから購入。(1年149ドル)

SSL導入の流れ

  1. [VPSサーバー] サーバーで秘密鍵を生成する
  2. [VPSサーバー] 秘密鍵を使って、Geotrustに申請するためのCSRファイルを作成する
  3. [WEB] GeoTrustにQuickSSL Premiumを申請
  4. [WEB] 申請完了後、中間証明書とサーバ証明書を取得
  5. [VPSサーバー] GeoTrust中間証明書とサーバ証明書をつなぎあわせて1つのファイルにする
  6. [VPSサーバー] 秘密鍵とつなぎあわせた証明書をnginx.confに読み込ませる
  7. [VPSサーバー] Nginxサーバーをリスタート (iptablesを使っている場合は443ポートをAccept)
  8. [WEB] httpsでアクセスしてエラーが出ていないかチェック

1. サーバー用秘密鍵・証明書の作成

# cd /etc/pki/tls/certs/
# sed -i 's/365/3650/g' Makefile
# make mydomain.com.crt
umask 77 ; \
        /usr/bin/openssl genrsa -aes128 2048 > mydomain.com.key
Generating RSA private key, 2048 bit long modulus
...........................................+++
................................................+++
e is 65537 (0x10001)
Enter pass phrase: ⇐ 任意のパスワード
Verifying - Enter pass phrase: ⇐ 任意のパスワードを再度入力
umask 77 ; \
        /usr/bin/openssl req -utf8 -new -key mydomain.com.key -x509 -days 3650 -out mydomain.com.crt -set_serial 0
Enter pass phrase for mydomain.com.key: ⇐ 任意のパスワードを再度入力
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP ⇐ 国名
State or Province Name (full name) []:Nagano ⇐ 件名
Locality Name (eg, city) [Default City]:Nagano ⇐ 市区町村
Organization Name (eg, company) [Default Company Ltd]:mydomain.com ⇐ 会社名(なんでも可)
Organizational Unit Name (eg, section) []: ⇐ 空
Common Name (eg, your name or your server's hostname) []:www.mydomain.com ⇐ SSL対応させるドメイン
Email Address []:webmaster.mydomain.com ⇐ 管理者メールアドレス

 2. 秘密鍵を使って、Geotrustに申請するためのCSRファイルを作成する

上記の操作でmydomain.com.keyというファイルが同階層に出来たので以下のコマンドを使ってサーバー用秘密鍵からパスワードを除去

# openssl rsa -in server.key -out server.key

次に、以下のコマンドを使ってCSRファイルを作成

># openssl req -new -key mydomain.com.key -out mydomain.com.csr

 3. GeoTrustにQuickSSL Premiumを申請

今回は、日本のGeoTrustではなく米国のGeoTrustから購入 → http://www.geotrust.com/ssl/ssl-certificates-premium/

幸い、申請サイトは日本語にも対応しています。

Step1) SSLの有効期限を指定

 QuickSSL Premium01

 

Step2) 管理者、技術者の情報を入力

QuickSSL Premium02

 

Step3) CSRデータを貼り付け

QuickSSL Premium03

 

Step4) ドメイン名が合っているか確認

QuickSSL Premium04

 

Step5) CSR情報が合っているか確認

QuickSSL Premium05

 

Step6) 証明書の情報を受信できる生きているEmailアドレスを選択する必要があります

QuickSSL Premium06

 

Step7) 支払情報を入力

QuickSSL Premium07

 

Step 8) 認証のために電話番号を登録して、自動ガイダンスの電話が掛かってくるのを待ちます。

自動ガイダンスが流れたら、画面下に表示されている番号を入力して#を押します。

認証に成功すると自動で画面が次に遷移します。

Step9) 申請完了です。

4.申請完了後、中間証明書とサーバ証明書を取得

送られてくるメールから、以下のページにたどり着くことができます。

QuickSSL Premium08

 

このUser Portal という画面の左メニューから「View Certificate Information」を選択します。

そして、以下の画面からGetTrust中間証明書とサーバ証明書を取得します。

・上のDownloadボタン(もしくはShow Certificateリンク)からサーバー証明書情報を取得します。
※フォーマットはX.509 Certificateで問題ありません
※ファイル名を mydomain.com.crt とします。

・下のDownloadボタン(もしくはShow Certificateリンク)からGetTrust中間証明書情報を取得します。
※フォーマットはApache Bundleで問題ありません
※ファイル名を geotrust.crt とします。

QuickSSL Premium09

 

5. GeoTrust中間証明書とサーバ証明書をつなぎあわせて1つのファイルにする

自分の場合は、上記の2ファイルを /etc/ssl/certs/ に置きました。
次に、catコマンドで2つのファイルを1つにします。

#cat mydomain.com.crt geotrust.crt > mydomain.com.chained.crt

 6. 秘密鍵とつなぎあわせた証明書をnginx.confに読み込ませる

/etc/nginx/nginx.conf を編集します。

server {
 listen 80;
 listen 443 ssl;
 # 秘密鍵 (cert. key)
 ssl_certificate_key /etc/pki/tls/certs/mydomain.com.key;
 # 合体証明書
 ssl_certificate /etc/ssl/certs/mydomain.com.chained.crt;
 //以下略

7. Nginxサーバーをリスタート (iptablesを使っている場合は443ポートをAccept)

# /etc/rc.d/init.d/nginx restart

 8. httpsでアクセスしてエラーが出ていないかチェック

ブラウザでサイトチェックして、鍵のマークが正常に表示されていたら成功です。

鍵が外れているようなアイコンが出る場合はHTTP通信を行っている可能性が高いので、ソースコードを見直します。