Web開発者の日常

主にプログラミング関連。たまに日常も綴ります。

学生にも手が届く! StartSSL で StartCom CA Class 2 SSL サーバ証明書を取得する

time 2014/05/28

key

こんにちは!

札幌で大学に通いながらソーシャルゲーム会社でバイト戦士をしている、たけです。

タイトルにもあるように、この度 StartCom CA Class 2 SSL サーバ証明書を取得しました。

 

sponsored link

SSL サーバ証明書とは

SSL/TLS を使った暗号化通信、サイト運営者の身元証明を行うときにを使う証明書です。

暗号化通信を行うだけであれば、自分で証明書(公開鍵を含んでいる)と秘密鍵を生成してサーバに設定することで出来ますが、ブラウザで開く際に証明書のエラーが表示されます。

これは属にオレオレ証明書(≒自己署名証明書)と言い、「私は魔法少女です(自称」と言っているようなものです。信用できる第三者機関による署名が無いので、その人が本当に正しい運営者であるか分かりません。

そこで、信用できる第三者機関(認証局)に署名を依頼して、正しい運営者であると証明してもらいます。

 

認証局 (CA: Certificate Authority)

認証局には、 Symantec(旧:VeriSign) や GeoTrust, GlobalSign 等があります。証明書の相場としては、安いものでも発行に年額 3~4 万円掛かります。

1年間で4万… 信用をお金で買うとはこういうことなのか、と思わされる金額ですね。

しかし、認証局を選べば個人でも手の届く金額で証明書が手に入る時代になりました。

信用の大安売りです。

その 1 つが Rapid SSL です。GeoTrust の低価格ブランドで、日本の取扱店を介して契約すると年額 2,100 ~ 2,600 円程で発行できます。

もう 1 つ、 StartCom 社の StartSSL というサービスがあります。驚くべきことに、年額 0 円です。無料で発行できます。

 

SSL サーバ証明書の種類

SSL サーバ証明書には大きく分けて 3 つの種類が認証局によって定められており、認証方法に次のような違いがあります。(詳細は認証局によって異なります)

  1. ドメイン名とメールアドレスを使ったドメイン認証
  2. ドメイン認証に加え、氏名(組織)、住所などの実在証明を行う実在認証
  3. ドメイン認証、実在認証に加えて、厳しい審査基準を設けた EV (Extended Validation)

1 と 2 は証明書を開いて中身を確認すると分かります。2 には個人名もしくは組織名と所在地が記載されています。

EV は、金融機関など重要な情報と信用を扱う組織で利用されています。最近では大手 SNS でも利用されているようです。

 

StartSSL

今回は、 2 番目の実在認証で証明書を発行しました。 StartSSL ではドメイン認証で 1 年間有効な証明書を無償発行できますが、それ以上の認証についてはお金が掛かります。

正直、ドメイン認証と実在認証の違いを確認してウェブサイトを閲覧しているユーザなんて居ないと思うので、 SSL サーバ証明書の実在認証には大した利点があるとは思えませんが、 StartSSL では $59.90 (約: 6,000 円) 支払って実在認証すると、次の利点があります。

  • 1 枚の証明書であらゆるサブドメインに対応できる Wildcard Certificate が発行可能
  • 1 枚の証明書で複数のドメイン名に対応できる UCC(Unified Communications Certificate) が発行可能
  • コードサイニング証明書 (Code Signing Certificate) が発行可能
  • どの証明書も発行から 2 年間有効

6,000 円と書きましたが、 2 年間で 6,000 円なので実質年額 3,000 円です。 .jp ドメインと同程度。安すぎますね。

更に、 StartSSL では実在認証に対してはお金が掛かりますが、証明書の発行・再発行は無償で行えます。どうしたらこんなビジネスモデルが成り立つのか謎です。

ちなみに、万が一秘密鍵が漏れてしまった際に一度発行した証明書の無効化するには $24.90 掛かるので注意する必要があります。

 

導入

この先は 1 つ以上ドメイン名を持っていることを前提に進めます。持っていない場合は SSL サーバ証明書を発行できません。

 

アカウント作成

まず、 StartSSL のアカウントを作成します。

Sign-up

Sign-up

Sign-up を選択し、登録に必要な情報を入力して Continue します。

認証に必要なクライアント証明書が発行されます。
2048bit と 4096bit が選べますが、 4096bit を選んでおいて間違いはないでしょう。

 

ドメイン認証

Validations Wizard

Validations Wizard

ログイン後、 Validations Wizard タブを開いて Domain Name Validation を選択し、 Continue します。

ドメイン名を入力

ドメイン名を入力

所持しているドメイン名を入力して、 Continue します。

メールアドレスを選択

メールアドレスを選択

認証に使用するメールアドレスを選択します。

この中に使っているメールアドレスが無い場合は、作る必要があります。

Continue を押すと、すぐに verification code が送られてきます。

Verification Code

Verification Code

送られてきた verification code を入力します。

Validation Success

Validation Success

認証完了です。

これで、無料の SSL サーバ証明書を発行する準備が整いました。

 

SSL サーバ証明書の発行

Certificates Wizard

Certificates Wizard

Certificates Wizard タブを開いて Web Server SSL/TLS Certificate を選択し、 Continue します。

Generate Private Key

Generate Private Key

秘密鍵を生成します。 (CSR を使って登録することもできます)

Save Private Key

Save Private Key

生成された秘密鍵を保存します。ここでは、テキストエリアの中身をエディタにコピペして server.key という名前で保存しておきます。

秘密鍵は暗号化されているので、サーバに設定する前に復号する必要があります。

復号する方法は、 openssl コマンドを使った方法が書かれていますが、 Windows を使っている場合など openssl がすぐに使えない状況場合でも、 StartSSL の Tool Box から簡単に復号することが可能です。 (ページ一番下の付録で説明しています)

Add Domains

Add Domains

証明書を発行するドメイン名を選択します。

Add Domains (subdomains)

Add Domains (subdomains)

 

画面は実在認証後のものなので、ドメイン認証後のものと若干異なります。

ドメイン認証のみの場合は、サブドメインを 1 つだけを登録することが出来ます。

サブドメインを利用しない場合でも、少なくとも 1 つは登録します。

Ready Processing Certificate

Ready Processing Certificate

ドメイン認証後の場合は先ほど登録したサブドメイン + サブドメイン無しで使える証明書が発行できます。

実在認証後の場合は先ほど追加したドメイン名 + あらゆるサブドメイン で使える証明書が発行できます。

Additional Check Required!

Additional Check Required!

人の手による確認が行われます。終わり次第メールが飛んでくるのでゆっくり待ちましょう。

 〜早いと30分くらい〜

Retrieve Certificate

Retrieve Certificate

メールを受け取ったら、 Tool Box タブを開いて上から 9 つ目の Retrieve Certificate を選択します。

右側に表示された Certificate の項目からダウンロードしたい証明書を選択して Continue します。

Certificate

Certificate

証明書が表示されました。ここでは、テキストエリアの中身をエディタにコピペして server.crt という名前で保存しておきます。

これでドメイン認証型の証明書を取得することが出来ました。(説明に使われている画像は実在認証になっています)

 

ルート証明書、中間 CA 証明書

StartCom CA Certificates

StartCom CA Certificates

サーバへ設定する際に必要な認証局証明書は、 Tool Box → StartCom CA Certificates にあります。

中間証明書は発行した証明書に対応した Class の証明書 (Intermediate Server CA Certificate) を設定する必要があります。

 

発展: 実在認証型の証明書を取得する

ドメイン認証型に比べて、認証が 1 段階増えるだけです。

Personal Identity Validation

Personal Identity Validation

ドメイン認証の場合と同様に Validations Wizard タブを開いて、 Personal Identity Validation を選択し Continue します。

Requirements

Requirements

実在認証に必要な書類、金額が表示されるので確認します。

※この後、担当のスタッフとメールでやりとりする必要があるので、この程度の文がスラスラ読める英語力が無いと厳しいです。

Select Validation Level

Select Validation Level

Personal Class 2 を選択します。

Attach Documents

Attach Documents

顔写真、住所、氏名、生年月日が分かる身分証明書をスキャンしたデータを 1 ファイルずつ送信して、全て送信し終わってから Continue します。

私の場合は、パスポートの顔写真のあるページ、運転免許証の両面をスキャンした画像を送りました。

Continue した後、担当のスタッフに氏名・住所・電話番号が確認できる追加の書類として直近の携帯の請求書を求められましたが、紙の請求書は止めてオンラインのみで確認できるようにしているため、「持っていない」と返答したところ verification code を郵送して本人確認する事になりました。

投函したと連絡を受けてから 15 日後、国際特殊通常書留で verification code が届きました。

Verification Code Submission

Verification Code Submission

verification code は、 Tool Box → Submit Verification Code から入力します。

verification code の確認は手動なので、メールが送られてくるまでゆっくり待ちましょう。

証明書の発行方法はドメイン認証型とほぼ同じなので省略します。

 

付録: 暗号化されている秘密鍵を復号する

Tool Box タブを開いて上から 7 つ目の Decrypt Private Key で復号できます。

Decrypt Private Key

Decrypt Private Key

先ほど保存した server.key の中身全て (—–BEGIN RSA PRIVATE KEY—– も含む) を貼り付けて、設定したパスワードを Passphrase に入力して Decrypt します。

Decrypt した秘密鍵の取り扱いには注意してください。秘密鍵が漏れると、証明書・暗号化の意味が無くなり、 $24.90 支払って証明書を無効化し、再度発行する必要があります。

間違ってもインターネット上のサーバに FTP で秘密鍵をアップロードするような事があってはいけません。

 

付録: ログイン用の証明書を更新

StartSSL へのログインにはクライアント証明書を使いますが、 SSL サーバ証明書と同様に有効期限があります。有効期限が過ぎて失効してしまうと、当然のことながら StartSSL ログインできなくなります。

デフォルト (Class 1) では有効期限が 1 年間なので、 SSL サーバ証明書と同時に期限が切れる 1 ヶ月程前に更新すると良いと思います。

S/MIME and Authenticate Certificate

S/MIME and Authenticate Certificate

SSL サーバ証明書の時と同様に Certificate Wizard タブを開き、 S/MIME and Authenticate Certificate を選択して Continue します。

Generate Private Key

Generate Private Key

鍵のサイズは 2048 を選択します。

Select Email Address

Select Email Address

認証済みのメールアドレスが選択できます。選択できるメールアドレスは Validation Wizard → Email Address Validation から増やせます。

Congratulations!

Congratulations!

クライアント証明書は即時発行され、ブラウザに保存されます。

クライアント証明書を保存しました

クライアント証明書を保存しました

OS やブラウザによって異なると思いますが、こんな表示が出ます。

クライアント証明書

クライアント証明書

クライアント証明書を表示すると、このようにエラーが表示されることがあります。

その場合は、 Tool Box → StartCom CA Certificates から対応する Class の証明書 (Intermediate Server CA Certificate) をダウンロードして PC にインストールすると解消します。

 

付録: WordPress で HTTPS 対応

WordPress では記事内へ画像を挿入する際のリンクがデフォルトで http:// から始まる絶対パスになっているようで、そのまま HTTPS でアクセスするとブラウザによっては次の警告が表示されます。

安全でない他のリソースが含まれています

安全でない他のリソースが含まれています

これは、 HTTPS で保護されたページであっても、その中に HTTP で取得したコンテンツがある場合、悪意のある第三者によって通信内容が改竄され、ページの内容やデザインが操作される恐れがあるためです。

このような状況は好ましくありません。

そこで、 WordPress HTTPS というプラグインを導入します。

対応後

対応後

警告が出なくなりました。

万が一警告が出た場合は、ページに設置している外部のコンテンツが原因である可能性が高いので、ページのソースから http:// で検索をかけて原因を特定し、個々に対応する必要があります。

 

最後に

学生でも SSL サーバ証明書が取得できる良い時代になりました。

趣味で Web アプリケーションを開発している方は、この機会に導入してみると良いのではないでしょうか。セキュリティの勉強にもなると思います。

※StartSSL にログインするためのクライアント証明書は、必ず安全な場所にバックアップを取っておき、有効期限に気を付けてください。

sponsored link

  • 今では画面の感じも変わって、
    (Class1の無料の方ですが)5サブドメインまで1証明書で取れるようになりましたね。

    Class2となると100サブドメイン?(ワイルドカード含)までを1証明書で取れるようになったのかな?(当方Class1しか使用していないので分かりませんが)

    • 今は Let’s Encrypt があるので、 StartSSL で Class1 の証明書を取得する意味がほとんど無くなってしまいました。

      Let’s Encrypt で手軽に HTTPS サーバを設定する
      http://qiita.com/ww24/items/9fa19594b4e3a8eb9b6f

      • Let’s Encrypt となると本当に手軽ですよね。
        Cron を使って全自動化手間要らず・・・
        残念ながら当方は Windows Server + IIS で運用してるので今のところそうとは行きませんが、、、

ブックマーク



アーカイブ

2017年3月
« 5月    
 12345
6789101112
13141516171819
20212223242526
2728293031