4.10.2 HTTPS通信に必要なファイルの作成手順
HTTPS通信に必要なファイルの作成手順を説明します。
- 重要
-
ここで説明する手順で作成したファイルは,バックアップ/リストアコマンドの対象ではありません。必ず,バックアップを取得しておいてください。証明書発行要求(CSR)など,ナビゲーション プラットフォームのセットアップや起動時には不要なファイルについても,必要に応じてバックアップを取得することを推奨します。
- 〈この項の構成〉
(1) CA(認証局)からサーバー証明書を発行する場合のファイルの作成の流れ
ユーザセットアッププロパティファイル(ucnp_setup_user.properties)に次の値を指定しておいてください。
-
ucnp.setup.server.cosminexus.hws.http.protocol = https
-
ucnp.setup.server.cosminexus.hws.http.cacert.enable = true
-
ucnp.setup.server.cosminexus.hws.http.ssl.privatekey.type = 暗号方式の指定
-
必要な暗号方式ごとに次の手順を実施します。
-
サーバー秘密鍵を作成
-
パスワードファイルを作成
-
証明書発行要求(CSR)を作成
-
CAに証明書発行要求(CSR)を送付
-
CAからサーバー証明書,CA証明書を受領
-
-
サーバー秘密鍵,パスワードファイル,サーバー証明書,およびCA証明書を配置します。
(2) 検証用の自己署名証明書を作成する場合のファイルの作成の流れ
ユーザセットアッププロパティファイル(ucnp_setup_user.properties)に次の値を指定しておいてください。
-
ucnp.setup.server.cosminexus.hws.http.protocol = https
-
ucnp.setup.server.cosminexus.hws.http.cacert.enable = false
-
ucnp.setup.server.cosminexus.hws.http.ssl.privatekey.type = 暗号方式の指定
-
必要な暗号方式ごとに次の手順を実施します。
-
サーバー秘密鍵を作成
-
パスワードファイルを作成
-
証明書発行要求(CSR)を作成
-
自己署名証明書を作成
-
-
サーバー秘密鍵,パスワードファイル,およびサーバー証明書を配置します。
(3) サーバー秘密鍵の作成手順(RSA暗号方式)
RSA暗号を利用したPKCS#1形式のWebサーバーの秘密鍵を作成します。
コマンドを実行すると,確認なしに出力ファイルで上書きされます。実行する前に,必要に応じて既存のファイルを退避してください。
-
次のコマンドを実行し,暗号化されたサーバー秘密鍵(PKCS#1形式)を作成します。
形式
"ナビゲーション プラットフォームインストールディレクトリ\PP\uCPSB\httpsd\sbin\openssl.bat"△genrsa△-rand△乱数生成用ファイルパス△秘密鍵の暗号種別△-out△サーバー秘密鍵ファイルの出力パス△秘密鍵のビット長
パラメタ
-
乱数生成用ファイルパス:乱数生成に利用する任意のファイルのパス
乱数生成用のファイルは,十分に大きい適当なファイルを指定してください。
-
秘密鍵の暗号種別:-desまたは-des3
-desを指定した場合,暗号種別としてDES(Data Encryption Standard)が選択されます。
-des3を指定した場合,暗号種別としてトリプルDESが選択されます。
WebサーバーとWebブラウザ間の通信での暗号種別とは関係ありません。
-
サーバー秘密鍵ファイルの出力パス:
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey.pem" (固定)
-
秘密鍵のビット長:2048(固定)
- 注意事項
-
コマンドを実行すると,パスフレーズの入力を2回求められます。パスフレーズは,4〜64文字で,2回とも同じものを入力してください。パスフレーズに65文字以上を入力してもエラーにはならないので,注意してください。
入力したパスフレーズは,他のコマンドを実行するときに利用するため,記録しておいてください。
コマンド実行例
"%UCNP_HOME%\PP\uCPSB\httpsd\sbin\openssl.bat" genrsa -rand "C:\Windows\System32\notepad.exe" -des -out "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey.pem" 2048
-
(4) サーバー秘密鍵の作成手順(ECC(楕円曲線暗号)方式)
ECC(楕円曲線暗号)を利用したPKCS#8形式のWebサーバーの秘密鍵を作成します。
コマンドを実行すると,確認なしに出力ファイルで上書きされます。実行する前に,必要に応じて既存のファイルを退避してください。
-
次のコマンドを実行し,暗号化前のサーバー秘密鍵を作成します。
形式
"ナビゲーション プラットフォームインストールディレクトリ\PP\uCPSB\httpsd\sbin\openssl.bat"△ecparam△-genkey△-noout△-rand△乱数生成用ファイルパス△-name△楕円曲線名△-out△暗号化前のサーバー秘密鍵ファイルの出力パス
パラメタ
-
乱数生成用ファイルパス:乱数生成に利用する任意のファイルのパス
乱数生成用のファイルは,十分に大きい適当なファイルを指定してください。
-
楕円曲線名:P-256またはP-384
秘密鍵の生成に利用する楕円曲線名を指定します。
-
暗号化前のサーバー秘密鍵ファイルの出力パス:
次の手順で入力とするファイルのパスを指定します。
暗号化されていないサーバー秘密鍵ファイルなので,漏洩しないようにしてください。
コマンド実行例
"%UCNP_HOME%\PP\uCPSB\httpsd\sbin\openssl.bat" ecparam -genkey -noout -rand "C:\Windows\System32\notepad.exe" -name P-256 -out "%TEMP%\httpsdkey-ecc-unencrypted.pem"
-
-
次のコマンドを実行し,暗号化されたサーバー秘密鍵(PKCS#8形式)を作成します。
形式
"ナビゲーション プラットフォームインストールディレクトリ\PP\uCPSB\httpsd\sbin\openssl.bat"△pkcs8△-topk8△-in△暗号化前のサーバー秘密鍵ファイルのパス△-out△暗号化後のサーバー秘密鍵ファイルの出力パス△-v2△秘密鍵の暗号アルゴリズム
パラメタ
-
暗号化前のサーバー秘密鍵ファイルのパス:
手順1で作成したファイルのパスを指定してください。
-
暗号化後のサーバー秘密鍵ファイルの出力パス:
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey-ecc.pem" (固定)
-
秘密鍵の暗号アルゴリズム:des-cbcまたはdes-ede3-cbc
秘密鍵の暗号化のアルゴリズムを指定します。
WebサーバーとWebブラウザ間の通信での暗号種別とは関係ありません。
- 注意事項
-
コマンドを実行すると,パスフレーズの入力を2回求められます。パスフレーズは,4〜64文字で,2回とも同じものを入力してください。パスフレーズに65文字以上を入力してもエラーにはならないので,注意してください。
入力したパスフレーズは,他のコマンドを実行するときに利用するため,記録しておいてください。
コマンド実行例
"%UCNP_HOME%\PP\uCPSB\httpsd\sbin\openssl.bat" pkcs8 -topk8 -in "%TEMP%\httpsdkey-ecc-unencrypted.pem" -out "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey-ecc.pem" -v2 des-cbc
-
(5) パスワードファイルの作成手順
サーバー秘密鍵に対応するパスワードファイルを作成します。
この手順は,作成済みのサーバー秘密鍵が存在することを前提としています。また,RSA暗号方式,ECC方式の両方のサーバー秘密鍵に対応しています。
コマンドを実行すると,確認なしに出力ファイルで上書きされます。実行する前に,必要に応じて既存のファイルを退避してください。
-
次のコマンドを実行し,サーバー秘密鍵に対応するパスワードファイルを作成します。
形式
"ナビゲーション プラットフォームインストールディレクトリ\PP\uCPSB\httpsd\sbin\sslpasswd.bat"△サーバー秘密鍵ファイルのパス△パスワードファイルの出力パス
パラメタ
-
サーバー秘密鍵ファイルのパス:
RSA暗号方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey.pem"
ECC方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey-ecc.pem"
-
パスワードファイルの出力パス:
出力先パスを指定します。
RSA暗号方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\.keypasswd"
ECC方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\.keypasswd-ecc"
コマンド実行例(RSA暗号方式の場合)
"%UCNP_HOME%\PP\uCPSB\httpsd\sbin\sslpasswd.bat" "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey.pem" "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\.keypasswd"
コマンド実行例(ECC方式の場合)
"%UCNP_HOME%\PP\uCPSB\httpsd\sbin\sslpasswd.bat" "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey-ecc.pem" "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\.keypasswd-ecc"
-
(6) 証明書発行要求(CSR)の作成手順
証明書発行要求(CSR)を作成します。自己署名証明書を作成する場合もこの手順で作成します。
この手順は,作成済みのサーバー秘密鍵が存在することを前提としています。また,RSA暗号方式,ECC方式の両方のサーバー秘密鍵に対応しています。
コマンドを実行すると,確認なしに出力ファイルで上書きされます。実行する前に,必要に応じて既存のファイルを退避してください。
-
次のコマンドを実行し,証明書発行要求(CSR)を作成します。
コマンドを実行すると,パスフレーズの入力を求められます。サーバー秘密鍵の作成時に設定したパスフレーズを入力してください。
形式
"ナビゲーション プラットフォームインストールディレクトリ\PP\uCPSB\httpsd\sbin\openssl.bat"△req△-new△署名アルゴリズムに使用するハッシュ種別△-key△サーバー秘密鍵のファイルパス△-out△CSRファイルの出力パス△[-addext△subjectAltNameの値]
パラメタ
-
署名アルゴリズムに使用するハッシュ種別:-sha256,-sha384または-sha512
-
サーバー秘密鍵のファイルパス:
RSA暗号方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey.pem"
ECC方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey-ecc.pem"
-
CSRファイルの出力パス:
RSA暗号方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsd.csr"
ECC方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsd-ecc.csr"
-
subjectAltNameの値:
サーバー証明書のsubjectAltNameの値を設定します。
サーバーのドメイン名またはIPアドレスを次の形式で指定できます。
・ドメイン名を1つ指定する場合の例
"subjectAltName=DNS:jp1np.hitachi.jp"
・複数のドメイン名を指定する場合の例
"subjectAltName=DNS:jp1np.hitachi.jp, DNS:jp1xxx.hitachi.jp"
・ドメイン名とIPアドレスを指定する場合の例
"subjectAltName=DNS:jp1np.hitachi.jp, IP:192.168.0.1"
コマンド実行例(RSA暗号方式,ドメイン名がjp1np.hitachi.jpの場合)
"%UCNP_HOME%\PP\uCPSB\httpsd\sbin\openssl.bat" req -new -sha256 -key "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey.pem" -out "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsd.csr" -addext "subjectAltName=DNS:jp1np.hitachi.jp"
-
(7) 自己署名証明書の作成手順
検証用に,CA(認証局)を介さずに動作確認用のサーバー証明書(自己署名証明書)を作成する場合の手順を説明します。
この手順は,作成済みのサーバー秘密鍵が存在することを前提としています。また,RSA暗号方式,ECC方式の両方のサーバー秘密鍵に対応しています。
コマンドを実行すると,確認なしに出力ファイルで上書きされます。実行する前に,必要に応じて既存のファイルを退避してください。
-
サーバー証明書のsubjectAltNameの値を設定する場合は,subjectAltNameの値を記載するテキストファイルを作成します。
この手順では,san.txtというファイル名で作成したものとして説明します。
ファイルの形式
subjectAltName△=△subjectAltNameの値
ファイルの例(ドメイン名を1つ指定する場合)
subjectAltName = DNS:jp1np.hitachi.jp
ファイルの例(IPアドレスを指定する場合)
subjectAltName = IP:192.168.0.1
-
次のコマンドを実行し,サーバー証明書を作成します。
形式
"ナビゲーション プラットフォームインストールディレクトリ\PP\uCPSB\httpsd\sbin\openssl.bat"△x509△-req△-days△有効期間(日数)△-in△証明書発行要求(CSR)のファイルパス△-signkey△サーバー秘密鍵のファイルパス△-out△サーバー証明書ファイルの出力パス△[-extfile△subjectAltNameの値を設定するためのファイルのパス]
パラメタ
-
有効期間(日数):1〜10000の整数
-
証明書発行要求(CSR)のファイルパス:
RSA暗号方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsd.csr"
ECC方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsd-ecc.csr"
-
サーバー秘密鍵のファイルパス:
RSA暗号方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey.pem"
ECC方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey-ecc.pem"
-
サーバー証明書ファイルの出力パス:
RSA暗号方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsd.pem"
ECC方式の場合
"%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsd-ecc.pem"
-
subjectAltNameの値を設定するためのファイルのパス:
手順1で作成したファイルをフルパスで指定してください。
コマンド実行例(RSA暗号方式の場合)
"%UCNP_HOME%\PP\uCPSB\httpsd\sbin\openssl.bat" x509 -req -days 3650 -in "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsd.csr" -signkey "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsdkey.pem" -out "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\httpsd.pem" -extfile "%UCNP_HOME%\PP\uCPSB\httpsd\conf\ssl\server\san.txt"
-