akiyoko blog

akiyoko の IT技術系ブログです

年額8.85ドル(約1,100円)の SSLサーバ証明書「RapidSSL」を試してみる

1. はじめに

以前、自己署名証明書(いわゆるオレオレ証明書)のことを書きましたが、今回は、認証局の発行した、ちゃんとした SSLサーバ証明書を取得してみることにします。


そもそも SSLサーバ証明書には、信頼性の高い順に、「EV SSL証明書」「企業認証(OV)証明書」「ドメイン認証(DV)証明書」という種類のものがあるのですが、今回は、個人サイト向けにドメイン認証を目的としたSSLサーバ証明書を取得します。

参考



できるだけ安いものを探していたのですが、

で紹介されていた「GoGetSSL」という海外のサイトがよさそうだったので、そこで探すことにしました。
www.gogetssl.com


Domain Validation(ドメイン認証)の SSL証明書のリストを見てみると、

製品 価格(1年契約) 価格(3年契約)
Comodo Positive SSL $ 8.95 /年 $ 3.65 /年
RapidSSL Standard $ 8.85 /年 $ 7.38 /年

の二つが候補に挙がったのですが(価格は2015年7月現時点)、契約期間は1年分だけでよかったので、今回は「RapidSSL Standard」を購入することにしました。


以下、

  • お名前.com でドメイン取得
  • GoGetSSL で「RapidSSL Standard」取得
  • Amazon EC2インスタンス起動
  • お名前.com で Aレコード設定
  • Amazon EC2インスタンスで SSLサーバ証明書の動作確認

をするための手順です。


 

2. お名前.com でドメイン取得

まずは、例えば、お名前.com などのレジストラでドメインを取得します。






2.1. お名前.com でドメインを取得

f:id:akiyoko:20150726100934p:plain

ここでは、Whois情報公開代行サービスを付けておきましたが、CSR申請時に一旦解除することになります。

SSLサーバー証明書など一部サービスにおいて、本人確認の手段としてドメインのWhois情報を利用する場合は、いったん「Whois情報公開代行」を解除し、承認作業が完了したのち、再度「Whois情報公開代行」を設定してください。


Whois情報公開代行|ドメイン取るならお名前.com」より



この後、GMO Internet からメールアドレス有効性認証のための確認メールが届くので、メール中のリンクをクリックして認証を完了させます。

f:id:akiyoko:20150726100942p:plain

f:id:akiyoko:20150726100950p:plain


 

2.2. Whois情報公開代行サービスを解除

ドメイン認証の申請のために、Whois情報公開代行サービスを解除しておきます。


ドメインNavi にログインし、「ドメイン設定」->「ドメインWhois情報変更」から、対象のドメイン名をクリックして「登録者情報の変更」にチェックを入れると登録者情報が表示されるので、情報が正しいか確認しておきます。

f:id:akiyoko:20150726100957p:plain



次に、「Navi TOP」のドメイン一覧から、対象のドメインの「Whois情報公開代行」の「解除する」をクリックして、処理を完了させます。

f:id:akiyoko:20150726101008p:plain



Whois情報公開代行サービスを解除したら、Whois検索で、自分で取得したドメインの Whois情報を確認しておきます。Registrant(登録者名)に自分の登録者情報が表示されていれば OKです。

Whois検索 - お名前.com


 

2.3. メール転送設定

最後に、ドメイン認証申請の際に送信される確認メールが受信できるように、特定のメールアドレスの転送設定をしておきます。


ドメインNavi の「オプション設定」->「メール転送設定」から、対象のドメインの「設定する」をクリックします。

f:id:akiyoko:20150726101020p:plain

転送元メールアドレスのローカル部に「admin」、転送先メールアドレスに実際に受け取れるメールアドレスを入力して「新規追加」をクリックし、「確認画面へ進む」をクリック。

f:id:akiyoko:20150726101029p:plain

設定が完了したら、念のため、転送元メールアドレス宛に送信したメールが受信できるかチェックしておきます。



3. GoGetSSL で RapidSSL Standard 取得

3.1. RapidSSL Standard を購入

GoGetSSL のトップページから、「Domain Validation」の「View SSL List」をクリック。

f:id:akiyoko:20150726101044p:plain


「RapidSSL Standard」の「Details」を選択します。

f:id:akiyoko:20150726101053p:plain

「BUY SSL」をクリック。

f:id:akiyoko:20150726101101p:plain

「Business Company or Private/Individual」に「Private customer (Individual)」を選択して、「Next Step」をクリック。

f:id:akiyoko:20150726101115p:plain

「Create new account」をクリックして、新規アカウントを作成します。

f:id:akiyoko:20150726101212p:plain

アカウント情報(CSRに使われる情報ではない)を入力して、次へ。

f:id:akiyoko:20150726101247p:plain

決済方法を選択して、「Complete Order」をクリックし、決済を完了させます。
ちなみに現時点で、8.85ドル=1,136円 でした。

f:id:akiyoko:20150726101259p:plain


支払いが完了したら、サイトに再度ログインします。

f:id:akiyoko:20150726101333p:plain


 

3.2. Online CSR Generator で CSR を作成

Certificate Signing Request(CSR)を作成します。

ここでは OpenSSL を利用せず、GoGetSSL が提供しているオンラインのツール(Online CSR Generator)で作成します。


GoGetSSL のダッシュボードから、「Online Tools」->「Online CSR Generator」と選択。

f:id:akiyoko:20150726101345p:plain


CSR の申請内容は以下の通りです。
ちなみに、個人の場合と法人の場合とで内容が少し異なっています。(なお、このツールでは「OU:部署名」が省略不可のため、適当な値を入れています。)

入力項目 個人の場合の入力例 法人の場合の入力例
Common Name(CN:コモンネーム) www.akiyoko.com(サイトのFQDN) 同じ
Organization(O:組織名) Taro Yamada(英語氏名) ABC Company Co.,Ltd.(正式英語組織名)
Department(OU:部署名) OU1 ( *1 ) System Solution Department
City(L:市区町村名) Xxx-shi / Xxx-ku 同じ
State(S/ST:都道府県名) Tokyo 同じ
Country(C:国名) JP 同じ
Email admin@{ドメイン名} 同じ

f:id:akiyoko:20150726101400p:plain

ちなみに、OpenSSL を使用する場合は以下を参考に。
Apache + OpenSSL CSR生成手順 (新規)ジオトラスト



「Generate CSR」をクリックすると、作成された CSR と秘密鍵が画面に表示されるので、両方ともコピペして保存しておきます。

f:id:akiyoko:20150726101410p:plain



 

3.3. CSR を申請

3.2.で作成した CSR を、GoGetSSL から申請します。


GoGetSSL のダッシュボードから、「Manage SSL certificates」をクリックし、リストから CSRを申請したい証明書の「Generate」をクリックします。

f:id:akiyoko:20150726101434p:plain


STEP 1 - CSR Configuration

Order Type New Order
Web Server Software Nginx
Paste your CSR 2.4.で生成した CSRをまるごとコピペ
Please select signature algorithm SHA2

上記を入力後、「Validate CSR」をクリック。

f:id:akiyoko:20150726101444p:plain


STEP 2 - Select validation method

2.3.で設定したメールアドレスを選択して、「Next Step」をクリックします。

f:id:akiyoko:20150726101457p:plain


管理者情報(Administrative Contact)を入力し、「agree to the Terms and Conditions」をチェックして、「Complete Generation」をクリック。

f:id:akiyoko:20150726101513p:plain


この時点では、証明書のステータスは「Processing」になっています。

f:id:akiyoko:20150726101535p:plain


この後数分で、「RapidSSL Certificate Request Confirmation」というタイトルのメールが、STEP2 で設定したメールアドレス宛に送られてきます。

f:id:akiyoko:20150726101545p:plain

メール中の上記のリンクにアクセスし、「承認します」をクリックします。

f:id:akiyoko:20150726101554p:plain

f:id:akiyoko:20150726101603p:plain

ステータスが「Active」になりました。

f:id:akiyoko:20150726101612p:plain



 

3.4. SSL証明書・中間CA証明書をダウンロード

My SSL Certificates から、対象の証明書の「View」ボタンをクリック。

f:id:akiyoko:20150726101622p:plain


SSL証明書は「Download SSL」、中間CA証明書は「CA Bundle」のリンクからダウンロードすることができます。ファイル名はそれぞれ、

  • www_akiyoko_com.crt
  • www_akiyoko_com.ca-bundle

となります。

f:id:akiyoko:20150726101632p:plain




 

4. Amazon EC2インスタンス起動

以下の設定で、Amazon EC2インスタンスを起動します。

Region Tokyo
VPC default
Subnet No preference
SecurityGroup 22, 80, 443番を許可(MyIPのみ)
AMI Ubuntu Server 14.04 LTS (HVM)
Elastic IP 52.68.xxx.xxx





 

5. お名前.com で Aレコード設定

5.1. ドメインNavi で Aレコードを設定

ドメインNavi にログインし、「ドメイン設定」->「DNS関連機能の設定」から、対象ドメインを選択して、「次へ進む」をクリック。

f:id:akiyoko:20150726101653p:plain

「DNSレコード設定を利用する」の「設定する」ボタンをクリック。

f:id:akiyoko:20150726101708p:plain


サブドメインを「www」に設定したホスト名の Aレコードに、4.で起動したインスタンスの Elastic IP を設定して、「追加」ボタンをクリック。

f:id:akiyoko:20150726101715p:plain

「確認画面へ進む」ボタンをクリックして、設定を完了させます。

f:id:akiyoko:20150726101723p:plain



 

5.2. メール転送設定を解除

ここでついでに、ドメイン認証の申請のために、一旦解除していた Whois情報公開代行サービスを復活させます。


「Navi TOP」のドメイン一覧から、対象のドメインの「Whois情報公開代行」の「申し込む」をクリックして、Whois情報公開代行サービスを設定します。

f:id:akiyoko:20150727004850p:plain

再設定は無料で行えるようです。

f:id:akiyoko:20150727005805p:plain

 

5.3. メール転送設定を解除

ついでのついでに、「オプション設定」->「メール転送設定」から、メール転送設定を解除しておきます。

f:id:akiyoko:20150726101732p:plain




 

6. Amazon EC2インスタンスで動作確認

 

6.1. 非SSLバージョンで動作確認


まずは、非SSLバージョンで動作確認をしておきます。

4.で起動したインスタンス上で、Django + Gunicorn + Nginx でアプリケーションを構築し、非SSLでアクセスできるように設定します。


以降、EC2インスタンスに乗り込んで操作します。

$ ssh -i ~/Downloads/T1-key.pem ubuntu@52.68.xxx.xxx


Django をインストール、アプリケーションを作成します。

### pip をインストール
$ sudo apt-get update
$ sudo apt-get install -y python-pip python-dev

### virtualenv をインストール
$ sudo pip install virtualenv

### Django をインストールし、/opt/webapps配下に Djangoプロジェクトを作成
$ sudo mkdir -p /opt/webapps
$ sudo chown `whoami`. /opt/webapps
$ cd /opt/webapps/
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install django
(venv)$ pip list | grep Django
Django (1.8.3)

### Djangoプロジェクトを作成
(venv)$ django-admin.py startproject myproject
(venv)$ cd myproject/
(venv)$ python manage.py migrate
(venv)$ python manage.py createsuperuser
(admin/admin@example.com/adminpass)

### settings.py に最後の一行を加える
(venv)$ vi myproject/settings.py
---
  ・
  ・
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
---

(venv)$ python manage.py collectstatic


Gunicorn をインストールして起動します。

(venv)$ pip install gunicorn

### デーモンとして実行
(venv)$ gunicorn --workers 3 --bind unix:/tmp/myproject.sock --daemon myproject.wsgi:application


Nginx をインストールして起動します。

$ sudo apt-get install -y nginx
$ nginx -v
nginx version: nginx/1.4.6 (Ubuntu)
### デフォルトの設定ファイルを書き換え
$ sudo vi /etc/nginx/sites-available/default
---
upstream myproject_backend {
    server unix:/tmp/myproject.sock fail_timeout=0;
}

server {
    listen 80;
    server_name www.akiyoko.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /opt/webapps/myproject;
    }

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://myproject_backend;
    }
}
---

$ sudo service nginx reload


http://www.akiyoko.com/
http://www.akiyoko.com/admin/
にアクセスして、動作確認します。


f:id:akiyoko:20150727210354p:plain

f:id:akiyoko:20150727210406p:plain



 

6.2. SSL証明書をサーバに設定して動作確認

次に、Nginx で SSL証明書の設定をして、動作確認を行います。


3.4.でダウンロードした SSL証明書をサーバに配置します。

### SSL証明書をサーバに転送(on Mac)
$ scp -i ~/Downloads/T1-key.pem ~/Downloads/www_akiyoko_com.crt ubuntu@52.68.xxx.xxx:/home/ubuntu/
### SSL証明書を配置
$ sudo mkdir /etc/nginx/ssl
$ sudo mv /home/ubuntu/www_akiyoko_com.crt /etc/nginx/ssl/


秘密鍵をサーバに配置します。

sudo vi /etc/nginx/ssl/www_akiyoko_com.key
---
3.2.で保存した秘密鍵をペースト
---


Nginx の設定ファイルを SSL用に書き換えます。

$ sudo vi /etc/nginx/sites-available/default
---
upstream myproject_backend {
    server unix:/tmp/myproject.sock fail_timeout=0;
}

server {
    listen 443 ssl;
    server_name www.akiyoko.com;
    ssl_certificate /etc/nginx/ssl/www_akiyoko_com.crt;
    ssl_certificate_key /etc/nginx/ssl/www_akiyoko_com.key;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /opt/webapps/myproject;
    }

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://myproject_backend;
    }
}
---

$ sudo service nginx reload

参考




最後に、
https://www.akiyoko.com/
https://www.akiyoko.com/admin/
にアクセスして、SSL通信が正しく行えるかチェックをします。

f:id:akiyoko:20150727211207p:plain

f:id:akiyoko:20150727211218p:plain



7. まとめ

個人サイト向けの「RapidSSL Standard」であれば(事前準備ができていれば)審査は数分で完了するので、やり方さえ分かれば、ものの一時間ほどでドメインの取得から SSLサーバ証明書の取得まで完了させることができます。


年額3.65ドルでSSL証明書を手に入れる - Qiita」のように年額3.65ドルとまではいきませんでしたが(「Comodo Positive SSL」の3年契約なら年額3.65ドル)、国内のサイト(例えば「SSLストア」 )であれば最安 2,980円くらいする「RapidSSL Standard」が年額8.85ドル(約1,100円)で取得できるというのは、かなりお得な感じがしました。

*1:省略可。同一コモンネームで複数の証明書が必要になる場合の区別のために使う。