[試験環境] トライアル版SSLサーバ証明書の導入

SSL_Secure_Sockets_Layer



Webアプリケーションに会員機能の追加などで、暗号化された安全なHTTPSプロトコルによる通信の導入が必要になる場合が有ります。
この記事は、SSL導入経験済みであれば問題ありませんが、そんなの初めて!という方の為の記事になります。

ちなみにSSL(Secure Sockets Layer)は、バージョン1.0の問題点を修正して再設計された版の2.0が1994年に発表され、Netscape Navigator 1.1に初めて実装されました。
1994年といえば、ミスチルのTomorrow never knowsがヒットし、ナリタブライアンが日本競馬史上5頭目の三冠馬となり、競馬自体が大変盛り上がっていた年であり、薬師寺保栄と辰吉丈一郎の間で日本人同士による初の統一王座決定戦が行われ、ボクシング人気もすごかった。そんな年です。あの頃は楽しかった。あの頃は楽しかった。

という訳でSSLですが、とりあえず無料で利用出来るトライアル版を試験環境に導入してみましょう。
ここで説明する環境は大まかに下記になります。

 OS:Windows
 開発言語:Java
 APサーバ:Tomcat
 ブラウザ:Google Chrome

手始めから試験環境への導入完了までの手順は下記になります。

  1. キーストアファイル生成
  2. CSRファイル生成
  3. トライアル版SSLサーバ証明書の申請
  4. キーストアにインポートする証明書3種類をダウンロード
  5. キーストアにルート証明書をインポート
  6. キーストアに中間CA証明書をインポート
  7. キーストアにトライアル版SSLサーバ証明書をインポート
  8. 試験環境のブラウザにトライアル用のルート証明書をインストール
  9. Tomcatのサーバー設定

手順が多いような気がしますが、必要最低限ですのでさくっとやっちゃいましょう。

1.キーストアファイル生成

ファイルの生成にはJavaSDKに付属しているkeytoolというツールを利用します。
Javaがインストールされているマシンであれば、下の例のようにツールが入っているはずです。
パスの例:C:\Program Files\Java\jdk1.7.0_06\bin\keytool.exe

それでは実際にツールを使ってキーストアを生成してみます。コマンドプロンプトを立ち上げ、下記コマンドを入力してください。

keytool -genkeypair -keysize 2048 -keyalg RSA

そうすると、色々と聞かれるので

キーストアのパスワードを入力してください: ※例では「passwd」と入力
新規パスワードを再入力してください: ※例では「passwd」と入力
姓名を入力してください。
  [Unknown]:  domain-name.com
組織単位名を入力してください。
  [Unknown]:  test
組織名を入力してください。
  [Unknown]:  test
都市名または地域名を入力してください。
  [Unknown]:  test
都道府県名を入力してください。
  [Unknown]:  test
この単位に該当する2文字の国コードを入力してください。
  [Unknown]:  JP
CN=localhost, OU=test, O=test, L=test, ST=test, C=JPでよろしいですか。
  [いいえ]:  y

<mykey>の鍵パスワードを入力してください
        (キーストアのパスワードと同じ場合はRETURNを押してください): ※yを入力

のように入力するとWindowsにログインしているユーザーのホームディレクトリに「.keystore」という名前でキーストアファイルが生成されます。
パスの例:C:/Users/*****/.keystore ※*****はユーザ名

上記コマンドは色んなパラメータをはしょって最も単純な指定にしています。このコマンドで生成された.keystoreの情報は下になります。
-keystore “.keystore” ・・デフォルトのキーストアファイル名
-alias “mykey” ・・このファイルを識別する名前
-validity 90 ・・証明書の有効日数




2.CSRファイル生成

次に、1で生成した.keystoreを元に、CSRファイルを生成します。
CSRとは、証明書発行局 (CA) に送信することを目的とした証明書要求情報の事です。

それでは生成してみましょう。以下コマンドを入力します。

keytool -certreq -file certreq.csr

そうすると.keystoreのパスワードを聞かれるので、1で指定したパスワードを入力します

キーストアのパスワードを入力してください: ※例では「passwd」を入力

これで、Windowsにログインしているユーザーのホームディレクトリに「certreq.csr」という名前でCSRファイルが生成されます。

このコマンドも必要最低限のパラメータとしています。
-file certreq.csr を指定しなければ、コマンドプロンプト上に生成したデータが表示されるだけとなってしまいますのでファイル名は指定しています。
-keystore “.keystore” ・・デフォルトのキーストアファイル名
-alias “mykey” ・・このファイルを識別するデフォルトの名前
-sigalg “SHA1withDSA” ・・CSR に署名を付けるときに使うアルゴリズムのデフォルト指定




3.トライアル版SSLサーバ証明書の申請

1,2の手順により、ユーザーホームディレクトリに.keystore、certreq.csrの二つのファイルが生成されていると思います。
ここではcertreq.csrの情報を元に、トライアル版SSLサーバ証明書を申請します。

トライアル版を発行されている企業様は複数ありますが、私が使った経験があるところで説明します。
下のアドレスにアクセスしてください。
https://www.cybertrust.ne.jp/ssl/trial.html
(トライアル証明書利用約款トライアル証明書利用約款

30日間利用出来る無料トライアルSSLサーバ証明書のページが開きます。
約款では、利用者自身が管理しているサーバ、クライアントのアプリ内の動作検証を行う為だけに利用するものとして発行するとなっていますので、当然それに従います。

・画面の「ご利用方法」に、ボタンが4つ並んでいると思いますが、これの一番左の「SureServer用」をクリックします。
・利用約款への同意ページが別窓で開きますので、よく読んでから同意にチェックを入れ同意ボタンをクリックします。
・申請情報の入力ページが開きますので、2で作成したcertreq.csrファイルをテキストエディタで開いて、中身の文字列をコピーし、それをページ内のテキストエリアに張り付けます。
 貼り付けたら↓の画像のようになると思います。
WS000154
・お客様情報の入力を行います。法人名、氏名、メールアドレスを入力し次へボタンをクリックします。
・申請情報の確認ページが開きますので、確認して発行ボタンをクリックします。
・5秒ほど待ちますと、トライアル証明書発行完了画面が表示されます。




4.キーストアにインポートする証明書3種類をダウンロード

3で発行完了画面が表示されている状態ですので、トライアル証明書のダウンロードを行います。
トライアル証明書のファイル名は「201309xx000xxxx.cer」のような名前になっていると思います。

証明書のダウンロードが終わったら、トライアルルート・中間CA証明書のダウンロードを行います。
↓のページを開きます。
https://www.cybertrust.ne.jp/ssl/trial_ca.html

「SureServer 用 トライアル中間CA証明書(3階層)」の、「ダウンロード [テキスト形式](通常はこちらをご選択ください。」のリンクを右クリックからファイルに保存を選択してローカルに保存します。

「トライアルルート証明書(SureServer / SureServer EV[2048bit] 共通)」の「ダウンロード [テキスト形式](通常はこちらをご選択ください。)」のファイルも同様に保存します。

ここまでの作業が完了したら、作業ディレクトリ(ログインユーザーのホームディレクトリ)に下の5つのファイルが存在しているはずです。

.keystore ・・1で生成したキーストアファイル
certreq.csr ・・2で生成したCSRファイル(もう使用済み)
201309xx000xxxx.cer ・・3で申請して発行されたトライアル版SSLサーバ証明書
TrialRootCA2.txt ・・4でダウンロードしたルート証明書
TrialPubCAG1.txt ・・4でダウンロードした中間CA証明書




5.キーストアにルート証明書をインポート

ここからはダウンロードしたファイルをキーストアにインポートする作業となります。
何らかの理由により失敗しても簡単にやり直せるよう、.keystoreファイルをバックアップしておくのが良いでしょう。

キーストアへのインポートは順番が重要であり、間違えると失敗します。
まずは一番深い階層のルート証明書になります。

下のコマンドを入力します。

keytool -import -alias root -file TrialRootCA2.txt
キーストアのパスワードを入力してください: ※例「passwd」を入力
   :
  (証明書の情報が表示されます)
   :
この証明書を信頼しますか。 [いいえ]:  y
証明書がキーストアに追加されました




6.キーストアに中間CA証明書をインポート

次に下のコマンドで中間CA証明書をインポートします。

keytool -import -alias CA -file TrialPubCAG1.txt
キーストアのパスワードを入力してください: ※例「passwd」を入力
証明書がキーストアに追加されました




7.キーストアにトライアル版SSLサーバ証明書をインポート

最後に下のコマンドでSSLサーバ証明書をインポートします。
※証明書のファイル名は読み替えてください。

keytool -import -alias mykey -file 201309xx000xxxx.cer
キーストアのパスワードを入力してください: ※例「passwd」を入力
証明書応答がキーストアにインストールされました

以上によりSSLサーバ証明書の生成は完了しましたので、次に環境周りを整えます。




8.試験環境のブラウザにトライアル用のルート証明書をインストール

今回使用している証明書はトライアル版ですので、ブラウザに証明書をインストールしなければなりません。

ここではGoogle Chromeにインストールする手順を記述します。
ブラウザ右上にある
WS000155
をクリックして表示されるメニューから「設定」を選択します。

設定画面の下にあるリンク「詳細設定を表示する」をクリックします。
追加表示されるメニューから
WS000156
の、証明書の管理ボタンをクリックします。
下のダイアログが開きますのでインポートボタンをクリック
WS000157
証明書のインポートのウィザードの開始ダイアログが開きますので「次へ」進み、
WS000158
ファイル選択でルート証明書を選択
WS000160
次へ進んでいき
WS000161
インポート完了
WS000162
信頼されたルート証明機関に以下のようにインポートされて完了です。
WS000163




9.Tomcatサーバー設定

Tomcatの設定ファイル「server.xml」を開きます。
eclipseのサーバーで設定している場合のパス例「C:\workspace\Servers\servername-config\server.xml」

デフォルトではコメントとなっているSSLの定義を以下のようにコメントインします。

    <Connector SSLEnabled="true" 
    			clientAuth="false" 
    			keystoreFile="C:/Users/xxxxx/.keystore" 
    			keystorePass="passwd" 
    			maxThreads="150" 
    			port="443" 
    			protocol="HTTP/1.1" 
    			scheme="https" 
    			secure="true" 
    			sslProtocol="TLS"/>

キーストアファイル名とパスワードに注意してください。

上記設定が出来たらTomcatを起動し、HTTPSでアクセスしてみましょう。
WS000164
このように緑色で表示されてアクセス出来れば成功です。

ここでアクセスしているドメイン名は、1でキーストアファイル生成時に指定したドメイン名にする必要があります。

ローカルマシン上で起動しているWebアプリケーションにlocalhost以外のドメインでアクセスするには、hostsファイルを修正します。
パス:C:\Windows\System32\drivers\etc

上記パスにhostsという名前のファイルが有るので開きます。
※Windows7では管理者権限でなければhostsには書き込めませんので、エディタの起動時に右クリックメニューから「管理者権限で実行する」を選択して開きます。

127.0.0.1 domain-name.com

ファイルを開いたら上記1行を追加(ドメイン名は読み替えてください)して上書き保存します。

これで、ブラウザにdomain-name.comを指定してアクセスした際にlocalhostを見に行くようになりデバッグ起動しているTomcatにリクエストが渡ります。そして、domain-name.comの名前でSSLサーバ証明書をインストールしていますから、HTTPSで暗号化された通信が出来るようになっています。

以上、お疲れ様でした!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>