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

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

実際の購入・登録の流れ

 それでは、実際に稼働中のWebサイトにJPRSドメイン認証型証明書を導入し、HTTPS化してみよう。今回は証明書を単体で購入し、筆者が個人的に利用しているIDCFクラウド上に構築したWebサイトに導入する手順を紹介する。なお、事業者にサーバの管理を任せている場合は、このプロセスは不要かもしれないが、今回は実際のコマンドとあわせて説明する。

 FQDNはwww.pcuser.jp、WWWサーバはCentOS 7.4 + Apache 2.4.6で構築しており、pcuser.jpにアクセスするとwww.pcuser.jpにリダイレクトされるようにした。

 証明書の発行の流れは紙ベースの証明書をイメージすると理解しやすい。申請者は申請書に証明してもらいたい事項を記入して認証局に提出する。認証局は「この内容が正しいことを証明する」と署名して返却する。この申請書にあたるものがCSR(Certificate Signing Request:証明書署名要求)であり、認証局の署名入りで返却されたものが証明書になる。

 また、CSRにはHTTPSの暗号通信で使用する公開鍵も含んでおり、その公開鍵に対応する秘密鍵を持ったサーバだけが当該証明書を利用できる。そのため、申請には以下の手順が必要となる。

  1. 秘密鍵とCSRを作成する
  2. CSRを認証局(もしくは指定事業者)に提出する
  3. 申請者がCSRに書かれたFQDNのドメインの管理者であることを認証局が確認する

 順番に見ていこう。

1、秘密鍵を作成する

 秘密鍵・CSRは原則、サーバー証明書を導入する予定のサーバ上で作成する。ファイルの保存場所、命名規則に特に制限はないので、今回は以下のようにした。

秘密鍵: /etc/pki/tls/private/pcuser.jp.key

CSR: /etc/pki/tls/certs/pcuser.jp.csr

 秘密鍵作成時にはパスフレーズを設定するが、そのままだと再起動時にパスフレーズを入力したり、パスフレーズを出力するスクリプトを用意したりする必要がある。今回は秘密鍵作成後にパスフレーズを削除しておく。

 まずはパスフレーズ付きの秘密鍵を作成する。

# openssl genrsa -aes256 2048 > /etc/pki/tls/private/pcuser.jp.pp.key
Generating RSA private key, 2048 bit long modulus
..............................................................+++
...............+++
e is 65537 (0x10001)
Enter pass phrase: [パスフレーズを入力]
Verifying - Enter pass phrase: [パスフレーズを再入力]

 次に秘密鍵からパスフレーズを解除する。パスフレーズを解除しない方がセキュリティ上は安全だが、その場合はApacheの再起動時にパスフレーズを入力するか、自動入力の仕組みを作っておく必要がある。

# openssl rsa -in /etc/pki/tls/private/pcuser.jp.pp.key -out /etc/pki/tls/private/pcuser.jp.key
Enter pass phrase for /etc/pki/tls/private/pcuser.jp.pp.key: [パスフレーズを入力]
writing RSA key

 秘密鍵は秘匿する必要があるファイルなので、Apacheを起動する管理者以外は見られないようにパーミッションを変更しておく。パスフレーズありの秘密鍵は使用しないので削除してよい。

# rm /etc/pki/tls/private/pcuser.jp.pp.key
rm: 通常ファイル `/etc/pki/tls/private/pcuser.jp.pp.key' を削除しますか? y ← yを入力
# chmod 600 /etc/pki/tls/private/pcuser.jp.key

2、CSRを作成する

 引き続きCSRを作成する。CSRには申請情報を含めるので、以下を事前に決めておく必要がある。

  • Country Name:国コード。日本の場合はJP
  • State or Province Name(full name):都道府県名。Tokyoなど。
  • Locality Name(eg, city):市区町村名。Minato-kuなど。
  • Organization Name(eg, company):組織名。ITmedia Inc.など。
  • Common Name(eg, your name or your server's hostname):証明書を導入するサイトの・FQDN。pcuser.jpなど。

 今回はドメイン認証なので、正しい情報として保証されるのはCommon Nameのみとなる。だが、利用者への情報提供という観点から上記の情報までは正しく入力しておこう。それ以外の情報は入力不要だ。

# openssl req -new -key /etc/pki/tls/private/pcuser.jp.key -out /etc/pki/tls/certs/pcuser.jp.csr -sha256
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) []:Tokyo ← 都道府県名を入力
Locality Name (eg, city) [Default City]:Chiyoda-ku ← 市区町村名を入力
Organization Name (eg, company) [Default Company Ltd]:ITmedia Inc. ← 組織名を入力
Organizational Unit Name (eg, section) []: ← 入力不要
Common Name (eg, your name or your server's hostname) []:pcuser.jp ← FQDNを入力
Email Address []: ← 入力不要
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ← 入力不要
An optional company name []: ← 入力不要

 opensslコマンドオプションの意味は次の通りだ。

 req	CSRの操作
 -new	新しいCSRを作成する
 -key	秘密鍵
 -out	CSRの出力ファイルパス

 CSRはサーバには不要なものなので、作業完了後は別のところに移動させてしまっても良い。

 なお、Webブラウザ上でCSRを作成できるサイトも存在するが、そのサイトの運用者に秘密鍵が漏れてしまう危険がある。指定事業者以外のWebサイトで提供されているツールを利用することは絶対に避けてもらいたい。本来、秘密鍵は指定事業者にも渡すべき情報ではないので、極力、CSRはサーバ上で自分自身で作成するようにしよう。

Copyright © ITmedia, Inc. All Rights Reserved.


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