常時SSL化時代の注目ソリューション――高信頼、高コスパ、国産のJPRSサーバー証明書に死角なし(3/4 ページ)

» 2018年05月23日 10時00分 公開
[PR/ITmedia]
PR

3、サーバー証明書の購入申し込み

 JPRSドメイン認証型証明書は直販のJPDirectの他、指定事業者からも購入できる。今回は証明書単体で購入できる指定事業者である、さくらインターネットから購入を行う。なお、他の事業者でも流れは変わらないはずだ。

さくらインターネットのサービス「さくらのSSL」からJPRSドメイン認証型証明書を申し込み
申し込みはさくらインターネット会員登録(無料)が必要。未登録の場合はここで新規会員登録を行う
お申込み種別「新規取得」、JPRS ドメイン認証型(972円/1年)を選択、下にスクロールしてクレジットカード情報や約款を確認して「同意する」にチェックを入れたらCSRの入力へ進む
CSRはテキストファイルなのでコピー&ペーストで貼り付け、「>」ボタンをクリックすると申請内容が右に表示される。内容に誤りがないか確認したら確認画面へ進む
この内容で申し込む、をクリック
申し込み完了画面。この下の方にあるテキストリンク「会員メニュー」をクリック
さくらインターネットの会員メニュー。「契約情報」をクリックする
契約サービスの確認をクリック
SSL JPRS ドメイン認証型(1年)が表示される。状態が「申込中」のときはしばらく待つ

4、認証

 ドメイン認証型証明書では「サーバー証明書の申請者がドメインを管理することができるか」が審査される。その方法として広く使われている方法は2つある。

メール認証

 ドメインの管理者のメールアドレスに認証用ページのURLを記載したメールを送り、そのURLをクリックすることで認証するもの。宛先にはpostmasterやadminなど、管理者として想定されるメールアドレスや、ドメイン情報WHOISに登録されているメールアドレスが使用される。顧客からWebサイトの管理のみを委託されている場合など、ドメイン管理が別組織の場合は事前の調整が必要になる。

ファイル認証

 Webサイト上の指定したURLに指定ファイルを設置し、それを認証局から確認してもらう方法。外部からアクセスできる必要があるため、開発機やリリース前サイトのように一般公開していないWebサイトでは部分的にアクセス可能にするなどの工夫が必要となる。

 また、グローバルIPアドレスを持たない内部用サイトで取得する場合はワイルドカード証明書を利用する、一時的にグローバルIPアドレスを持つサーバで認証する、といった方法がある。

 さくらインターネットの「さくらのSSL」ではファイル認証方式を採っている。なお、wwwあり・なしの両方のFQDNが使用できるダブルアドレスオプションが有効になっており、認証局がファイル認証のためにアクセスするWebサイトはwwwがない方になるので注意しよう。

しばらくして状態が「準備中」に変わったら「サーバー証明書」のボタンをクリックする
「認証ファイルDL」のボタンをクリックすると認証用ファイルがダウンロードできる。このファイルをドキュメントルート以下、「.well-known/pki-validation/」ディレクトリの下に配置する。もし、ステージングサイトなど外部に公開しないサイトの場合はAliasを使って.well-knownディレクトリ以下のみを公開する。なお、リダイレクトは利用できない

 認証局は認証用クローラーによってWebサイトにアクセスし、当該ファイルが設置されていることを確認する。以下は実際のApacheのアクセスログだ。認証用クローラーのリクエストに対し、認証用ファイルを設置するまで404(ファイルが見つからない)エラーが出ているが、最後の行でステータス200を返し認証が正常に終了したことが分かる。

203.208.23.40 - - [24/Apr/2018:02:38:58 +0900] "GET /.well-known/pki-validation/bcdc95ecc8e63346cd4763960febb3d7.txt HTTP/1.1" 404 261 "-" "JPRS_CA (web file authentication crawler)"
203.208.23.40 - - [24/Apr/2018:02:40:16 +0900] "GET /.well-known/pki-validation/bcdc95ecc8e63346cd4763960febb3d7.txt HTTP/1.1" 404 261 "-" "JPRS_CA (web file authentication crawler)"
203.208.23.40 - - [24/Apr/2018:02:48:57 +0900] "GET /.well-known/pki-validation/bcdc95ecc8e63346cd4763960febb3d7.txt HTTP/1.1" 200 32 "-" "JPRS_CA (web file authentication crawler)"

 認証が正常に完了すれば認証用ファイルは削除して構わない。「[さくらインターネット]JPRS SSLサーバー証明書発行のお知らせ」というメールが届いたら発行完了なので、会員メニューからサーバー証明書をダウンロードする。サーバー証明書はserver.crtというファイル名になっているが、「pcuser.jp.crt」のようにFQDNをファイル名にしておくと分かりやすいだろう。

会員メニューから契約情報>契約サービス一覧・表示を選択し、申請中の証明書の手続き「サーバー証明書」をクリック
手続きの欄が「サーバー証明書DL」に変わったら発行完了

 ダウンロードした証明書単体では証明パスが不完全なので、ルート証明書と今回のサーバー証明書の間を取り持つ中間CA証明書が必要になる。中間証明書はJPRSのサイトからダウンロード可能だ。

ダウンロードしたサーバー証明書を開くと発行者JPRS Domain Validation Authority - G2、有効期間が約1年間のものであることが分かるが、「情報不足のため、この証明書を検証できません。」と表示される。これは中間CA証明書がないため
中間CA証明書はJPRSのサイトからダウンロードできる

 HTTPS対応にはTLSに対応した追加モジュールが必要となるが、ここでは広く利用されているmod_sslを利用する。まずはmod_sslパッケージが導入されているかどうかを確認しよう。「yum list installed」で導入済みパッケージが表示される。

[root@www ~]# yum list installed | grep mod_ssl
[root@www ~]#

 上記コマンドの結果が何も表示されない場合は未インストールなのでインストールを行う。

[root@www ~]# yum install mod_ssl
読み込んだプラグイン:fastestmirror, remove-with-leaves, show-leaves
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mod_ssl.x86_64 1:2.4.6-67.el7.centos.6 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
==========================================================================================================================================================================
 Package                              アーキテクチャー                    バージョン                                           リポジトリー                          容量
==========================================================================================================================================================================
インストール中:
 mod_ssl                              x86_64                              1:2.4.6-67.el7.centos.6                              updates                              109 k
トランザクションの要約
==========================================================================================================================================================================
インストール  1 パッケージ
総ダウンロード容量: 109 k
インストール容量: 224 k
Is this ok [y/d/N]: y
Downloading packages:
mod_ssl-2.4.6-67.el7.centos.6.x86_64.rpm                                                                                                           | 109 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 1:mod_ssl-2.4.6-67.el7.centos.6.x86_64                                                                                                    1/1
  検証中                  : 1:mod_ssl-2.4.6-67.el7.centos.6.x86_64                                                                                                    1/1
インストール:
  mod_ssl.x86_64 1:2.4.6-67.el7.centos.6
完了しました!
New leaves:
  mod_ssl.x86_64
[root@www ~]#

 mod_sslが導入されると合わせて「/etc/httpd/conf.d/ssl.conf」が作成される。デフォルト状態では「/etc/httpd/conf/httpd.conf」の中で「/etc/httpd/conf.d/*.conf」が読み込まれるようになっている。設定ファイルを書き換えている場合は「ssl.conf」が読み込まれる状態になっていることを確認しよう。

 なお、初期状態ではmod_sslを導入した時点で作成されたローカルな証明書が登録されているため、Webブラウザで開いても無効な証明書となっている。

導入時点では正規の証明書ではないため無効扱いとなる

 次に取得したサーバー証明書を導入する。今回、サーバー証明書は中間CA証明書とともに以下に配置した。

証明書: /etc/pki/tls/certs/pcuser.jp.crt

中間CA証明書: /etc/pki/tls/certs/JPRS_DVCA_G2_PEM.cer

 なお、今回はCentOS7標準のApache2.4.6を対象としているが、Apache2.4.8以降では中間CA証明書ファイルを使用しないように変更されている。Apache2.4.8以降では中間CA証明書とサーバー証明書を1つにまとめたファイルをサーバー証明書として設定する。

 「/etc/httpd/conf.d/ssl.conf」を開き、配置した証明書のパスに合わせて以下の設定を変更する。

ディレクティブ 意味 元の値 今回の例
SSLCertificateFile サーバー証明書ファイルパス /etc/pki/tls/certs/localhost.crt /etc/pki/tls/certs/pcuser.jp.crt
SSLCertificateKeyFile 秘密鍵ファイルパス /etc/pki/tls/private/localhost.key /etc/pki/tls/private/pcuser.jp.key
SSLCertificateChainFile 中間CA証明書 (コメントアウト)/etc/pki/tls/certs/server-chain.crt /etc/pki/tls/certs/JPRS_DVCA_G2_PEM.cer

 また、ここでもう1つ気を付けてほしいのが暗号強度に関連した脆弱性の対策だ。HTTPSで使用できるプロトコルにはSSL、TLSそれぞれいくつかのバージョンがあるが、現在安全とされているのはTLS1.2以降のみとなってしまっている。そのため、全てのSSL、TLS1.1以前を無効化しておこう。

 それから使用する暗号スイートにも脆弱性が指摘されているものが多々ある。詳しくはIPAが発行している「SSL/TLS暗号設定ガイドライン」などを参考にしてもらいたい。ここでは初期状態に加え、RC4、3DES、CBCモード、RSAを禁止した。

ディレクティブ 意味 元の値 推奨値
SSLProtocol SSLプロトコル all -SSLv2(SSLv2を禁止) all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1(SSLv2/v3、TLS1.0/1.1を禁止)
SSLCipherSuite 暗号スイート HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA(強度中/高:aNULL、MD5、SEED、IDEAを除く) HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4:!3DES:!CBC:!RSA(強度中/高:aNULL、MD5、SEED、IDEA、RC4、3DES、CBC、RSAを除く)

 設定が完了したら文法ミスがないか、configtestで確認後、再起動を行う。

# service httpd configtest
Syntax OK ← このように表示されれば文法上は問題なし
# systemctl restart httpd.service

 環境によってはHTTPS通信で使用するポート443/TCPに外部から到達できるよう、ポートフォワーディングとファイアウォールを設定する必要がある。

IDCFクラウドの場合はIPアドレスからファイアウォールを選択。ソースCIDRにAny、タイプにHTTPSを指定する
グローバルIPアドレスで受け取ったHTTPS通信をWebサーバに転送するため、ポートフォワーディングも設定。パブリックポートHTTPS(TCP:443)、プライベートポート443、仮想マシンにWebサーバを指定

 これでようやく外部からHTTPS通信ができるようになったはずなので、Webブラウザから確認してみよう。Chromeの場合、アドレスバーに「保護された通信」と表示されるはずだ。

 また、「保護された通信」の上でクリックし、証明書の下に表示された「有効」をクリックすると証明書の詳細を確認できる。「証明書のパス」タブを見るとルート証明書の「SECOM Trust Systems Co Ltd.」の次に中間CA証明書の「JPRS Domain Validation Authority - G2」があり、その次にサーバー証明書が表示されているはずだ。

 また、SSL/TLSが正しく設定されているかどうかを診断してくれるサイトがあるので、チェックをしておくと良いだろう。

中間CA証明書を経由してサーバー証明書が有効なものであることが保証された
セキュリティ会社QualysのSSL Labs。A判定であればまず心配はいらないだろう
初期状態のままだとC判定

Copyright © ITmedia, Inc. All Rights Reserved.


提供:株式会社日本レジストリサービス
アイティメディア営業企画/制作:ITmedia PC USER 編集部/掲載内容有効期限:2018年8月2日