よくあるご質問(V3)

Q.SSL証明書を使用してhttpsで通信を行うための手順(GlassFish版)

以下は、GlassFish 版 POWER EGG Ver 3.0c ~ 3.5c で、SSL証明書を使用してhttpsで通信を行うための手順です。

本手順に記載されている、各フォルダ名の記述(C:\PE4J\・・・)は、POWER EGG のインストール先に応じて変更してください。

1.秘密鍵の作成

最初に秘密鍵「server.key」を作成します。
コマンドプロンプトを管理者で起動し、任意の作業フォルダに移動してください。
次に、作業フォルダで以下のコマンドを実行してください。

C:\PE4J\Apache24\bin\openssl.exe genrsa -des3 -out server.key 2048
※ コマンドのオプション(鍵の長さ: server.key 2048 等)は必要に応じて変更してください。

実行後、パスフレーズの入力を求められるので、任意のパスフレーズを入力してください。入力後、パスフレーズの再入力が求められます。
再入力後、作業フォルダに秘密鍵ファイル 「server.key」 が作成されます。
※ パスフレーズは、大切に管理してください。

2.CSR(証明書発行要求)の作成

作成した秘密鍵「server.key」を利用して、CSR(証明書発行要求)「server.csr」を作成します。
コマンドプロンプトを管理者で開き、server.key のある作業フォルダに移動し、以下の2 つのコマンドを順に実行してください。

SET OPENSSL_CONF=C:\PE4J\Apache24\conf\openssl.cnf
C:\PE4J\Apache24\bin\openssl.exe req -new -key server.key -out server.csr

コマンド実行後パスフレーズを求められるため、秘密鍵作成時に設定したパスフレーズを入力してください。
入力後、証明書発行要求に必要な情報の入力が求められるため、以下を参考に必要情報を入力してください。

入力項目 入力値
Country Name (2 letter code) [AU]: 国を表す2 文字のコード(日本の場合:JP)
State or Province Name (full name) [Some-State]: 都道府県(例: Tokyo)
Locality Name (eg, city) []: 市区町村(例: Chiyoda-ku)
Organization Name (eg, company) [Internet Widgits Pty Ltd]: 会社名(例: D-CIRCLE INC)
Organizational Unit Name (eg,section) []: 部署名(例: System Division)
Common Name (e.g. server FQDN or YOUR name) []: アクセスするホスト名(例: aaa.bbb.co.jp)
Email Address []: メールアドレス(特に必要なければ入力しないでください)
A challenge password []: 証明書を破棄する時に必要になるパスワード(特に必要なければ入力しないでください)
An optional company name []: 別の組織名の入力(特に必要なければ入力しないでください)

コマンド実行例

C:\wk>SET OPENSSL_CONF=C:\PE4J\Apache24\conf\openssl.cnf

C:\wk>C:\PE4J\Apache24\bin\openssl.exe req -new -key server.key -out server.csr
Enter pass phrase for server.key:
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) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Chiyoda-ku
Organization Name (eg, company) [Internet Widgits Pty Ltd]: D-CIRCLE INC
Organizational Unit Name (eg, section) []:System Division
Common Name (e.g. server FQDN or YOUR name) []:aaa.bbb.co.jp
Email Address []:
※ 何も入力せずにEnterキー押下

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:※ 何も入力せずにEnterキー押下
An optional company name []:※ 何も入力せずにEnterキー押下

コマンド実行および情報の入力後、作業フォルダに CSR(証明書発行要求)ファイル 「server.csr」が作成されます。

3.サーバ証明書の発行

作成した CSR を使用し、証明書発行機関に X.509 形式のサーバ証明書の発行を依頼してください。
ハッシュアルゴリズムにはSHA-2(SHA-256)を使用することを推奨します。

サーバ証明書が発行された後、サーバ証明書および中間CA証明書を、Base64 エンコード形式でファイルとして保存してください。
この手順では、下記の名前で保存したものとします:

・サーバ証明書: server.crt
・中間CA証明書 : intermediate.crt

4.秘密鍵のパスフレーズ解除

現在の秘密鍵 「server.key」 は、アクセス毎にパスフレーズが求められるため、Apache 起動時にもパスフレーズを入力する必要があります。
以下の手順で、パスフレーズを解除したファイルを作成します。

「server.key」 のファイル名および拡張子を 「server.key.bk」 に変更してください。
変更後、コマンドプロンプトを管理者で開き、server.key.bk のある作業フォルダに移動し、以下のコマンドを実行して下さい。

C:\PE4J\Apache24\bin\openssl.exe rsa -in server.key.bk -out server.key

コマンド実行後パスフレーズを求められるため、秘密鍵作成時に設定したパスフレーズを入力してください。
作業フォルダに、パスフレーズが解除された秘密鍵ファイル 「server.key」 が作成されます。

5.作成したファイルのコピー

下記3ファイルを、C:\PE4J\Apache24\conf フォルダにコピーしてください。
server.key (パスフレーズが解除された秘密鍵ファイル)
server.crt (サーバ証明書ファイル)
intermediate.crt (中間CA証明書ファイル)

6.ファイル httpd.conf の編集

※ 変更前にファイルをコピーしてバックアップすることをお勧めします。
設定ファイル C:\PE4J\Apache24\conf\httpd.conf を開き、以下の編集を行ってください。

①以下の1行がコメントアウトされている場合(行の先頭に「#」がある場合)、解除してください(先頭の「#」を削除してください)。
 ※ POWER EGG のバージョンによってはデフォルトで解除されています。

#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

②以下の1行がコメントアウトされている場合、解除してください。
 ※ POWER EGG のバージョンによってはデフォルトで解除されています。

#LoadModule ssl_module modules/mod_ssl.so

LoadModule ssl_module modules/mod_ssl.so

③以下の1行のコメントアウトを解除してください。

#Include conf/extra/httpd-ssl.conf

Include conf/extra/httpd-ssl.conf

7.設定ファイル httpd-ssl.conf の編集

※ 変更前にファイルをコピーしてバックアップすることをお勧めします。
設定ファイル C:\PE4J\Apache24\conf\extra\httpd-ssl.conf を開き、以下の編集を行ってください。

① 以下の1行をコメントアウトしてください(先頭に「#」を追加してください)。

DocumentRoot "${SRVROOT}/htdocs"

#DocumentRoot "${SRVROOT}/htdocs"

② 以下の箇所を変更してください。

ServerName www.example.com:443

ServerName (アクセスするホスト名):443
※ (アクセスするホスト名)は、CSR作成時に指定したCommon Nameと同じものを指定してください。

③ 以下の2 行をコメントアウトしてください。

ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"

#ErrorLog "${SRVROOT}/logs/error.log"
#TransferLog "${SRVROOT}/logs/access.log"

④ 以下の行の下に1行追加してください。

#SSLCACertificateFile "${SRVROOT}/conf/ssl.crt/ca-bundle.crt"
の下に
SSLCACertificateFile "C:/PE4J/Apache24/conf/intermediate.crt"
を追加。

⑤ 以下の2 行をコメントアウトしてください。

CustomLog "${SRVROOT}/logs/ssl_request.log" \
     "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

#CustomLog "${SRVROOT}/logs/ssl_request.log" \
#     "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

⑥ 上記で変更した行の下に、以下の3 行を追加してください。なお、折り返して3行以上で表示されている場合がありますが、「LogFormat」「ErrorLog」「CustomLog」から始まる3行です。折り返し部分に半角空白がある場合は、半角空白が入った状態で追加してください。

LogFormat "%h\t%{X-Forwarded-For}i\t%l\t%u\t%{%Y-%m-%d %H:%M:%S}t\t\"%r\"\t%>s\t%b\t\"%{User-Agent}i\"\t\"%{JSESSIONID}C\"\t%T" pedebug
ErrorLog "|C:/PE4J/Apache24/bin/rotatelogs.exe logs/ssl-error.%Y-%m-%d.log 86400 540"
CustomLog "|C:/PE4J/Apache24/bin/rotatelogs.exe logs/ssl-access.%Y-%m-%d.log 86400 540" pedebug

⑦ 上記で追加した行の下に、以下のいずれか1行を追加してください。

※ GlassFish の Java プロセスが1つの場合
JkMount /pe4j/* pe4j-1
※ GlassFish の Java プロセスが2つの場合
JkMount /pe4j/* pe4j-lb

8.Apache HTTP Server の再起動

Windows のサービス「POWER EGG HTTP Server」を再起動してください。

以上で設定は完了です。

9.http から https へのリダイレクトの設定

上記の手順により、 http と https の両方でアクセスできるようになります。
日次バッチやスマートフォン版の内部的な通信で http を使用しているため、http を完全に停止することはできません。
クライアントから http でアクセスさせたくない場合は、Windows ファイアウォールなどで外部からの http のアクセスを遮断してください。
クライアントから http でアクセスが行われた場合に遮断するのではなく https にリダイレクトさせる場合は、下記の設定を行ってください。

① 設定ファイル C:\PE4J\Apache24\conf\httpd.conf を開き、下記のコメントアウトを解除してください。

#LoadModule rewrite_module modules/mod_rewrite.so

LoadModule rewrite_module modules/mod_rewrite.so

② 続けて、ファイル httpd.conf の末尾に下記の3 行を追加してください。

RewriteEngine On
RewriteCond %{HTTP_HOST} !=localhost
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

③ Windows のサービス「POWER EGG HTTP Server」を再起動してください。

FAQ番号

T00003