よくあるご質問(V3)

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

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

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

1.秘密鍵の作成

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

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

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

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

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

C:\Interstage\F3FMahs\bin\openssl req -config C:\Interstage\F3FMahs\conf\openssl.cnf -new -key server.key -out server.csr
※ 折り返して2行以上で表示されている場合がありますが、1行で入力して実行してください。折り返し部分に半角空白がある場合は、半角空白が入った状態で追加してください。

コマンド実行後パスフレーズを求められるため、秘密鍵作成時に設定したパスフレーズを入力してください。

パスフレーズ入力後、証明書発行要求に必要な情報の入力が求められるため、以下を参考に必要情報を入力してください。

入力項目 入力値
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>C:\Interstage\F3FMahs\bin\openssl req -config C:\Interstage\F3FMahs\conf\openssl.cnf -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)を使用することを推奨します。

サーバ証明書が発行された後、Base64 エンコード形式でファイルとして保存してください。この手順では、「server.crt」というファイル名で保存するものとします。
また、中間CA証明書がある場合、ファイル「server.crt」では下記のようにサーバ証明書に続けて中間CA証明書も記載してください。

-----BEGIN CERTIFICATE-----
・・・・・・・・・・・・・・・・・・・・・・・・・・
(サーバ証明書)
・・・・・・・・・・・・・・・・・・・・・・・・・・
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
・・・・・・・・・・・・・・・・・・・・・・・・・・
(中間CA 証明書)
・・・・・・・・・・・・・・・・・・・・・・・・・・
-----END CERTIFICATE-----

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

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

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

C:\Interstage\F3FMahs\bin\openssl rsa -in server.key.bk -out server.key

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

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

フォルダ C:\Interstage\F3FMahs\conf\ssl.crt を作成し、下記2ファイルをコピーしてください。

server.key (パスフレーズが解除された秘密鍵ファイル)
server.crt (サーバ証明書ファイル)

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

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

① 既存のポート80 の設定行の下に、ポート443 でも受け付ける設定を追加します。

Listen 0.0.0.0:80
Listen 0.0.0.0:443

② 下記の行の先頭の「#」を削除してコメントアウトを解除します。

#LoadModule ssl_module "C:/Interstage/F3FMahs/modules/mod_ssl.so"

LoadModule ssl_module "C:/Interstage/F3FMahs/modules/mod_ssl.so"

③ ポート443 で受け付けるサイトのVirtualHost の設定をファイル末尾に追加してください。

<VirtualHost *:443>
ServerName localhost
ErrorLog "|C:/Interstage/F3FMahs/bin/rotatelogs.exe logs/ssl_error.%Y-%m-%d.log 86400 540"
CustomLog "|C:/Interstage/F3FMahs/bin/rotatelogs.exe logs/ssl_access.%Y-%m-%d.log 86400 540" pedebug
SSLEngine On
SSLProtocol TLSv1.2
SSLCertificateFile C:\Interstage\F3FMahs\conf\ssl.crt\server.crt
SSLCertificateKeyFile C:\Interstage\F3FMahs\conf\ssl.crt\server.key
</VirtualHost>

「ServerName localhost」の「localhost」は、アクセスするホスト名(CSR 作成時に指定したもの)を指定してください。名前が異なる場合、HTTPサーバ起動時に警告がssl_error ログに出力されます。

「C:\Interstage」の部分は、Interstageインストール先を指定してください。

7.HTTP サーバの再起動

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

以上で設定は完了です。

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

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

① 設定ファイル C:\Interstage\F3FMahs\conf\httpd.conf を開き、末尾に下記の3 行を追加してください。

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

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

FAQ番号

T00004