1.8.7 REST APIクライアントとREST APIサーバ間でSSL通信するよう設定する(認証局が発行したサーバ証明書を使用する場合)
背景
- 注意
-
サーバ証明書および秘密鍵は、REST APIサーバにログインしたすべてのユーザがアクセスできます。悪意のあるユーザがログインできないよう、ユーザアカウントの管理には十分に注意してください。
- ヒント
-
Linuxの場合、OpenSSLのファイルが手順中のパスとは異なる場所に格納されていることがあります。次の手順では、opensslファイルおよびopenssl.cfgファイルが<OpenSSLのインストール先>/binにある環境を想定しています。
次のコマンドを実行すると、openssl.cfgの格納先を確認できます。
<OpenSSLのインストール先>/bin/openssl version -a | grep OPENSSLDIR
操作手順
-
次のコマンドを実行して、秘密鍵ファイルを作成します。
- Windowsの場合:
- <OpenSSLのインストール先>\bin\openssl genrsa -out <秘密鍵ファイル> 2048
- Linuxの場合:
- <OpenSSLのインストール先>/bin/openssl genrsa -out <秘密鍵ファイル> 2048
オプション
- out
- 作成する秘密鍵の出力先パスを指定します。出力先パスに同じ名称のファイルがある場合、ファイルが上書きされます。
- ヒント
-
秘密鍵ファイルは、次の場所にcreatedServer.keyというファイル名で保存しておくことをお勧めします。
- Windowsの場合:
- <REST APIのインストール先>\oss\apache\conf\ssl.key\createdServer.key
- Linuxの場合:
- <REST APIのインストール先>/oss/apache/conf/ssl.key/createdServer.key
このディレクトリには、REST APIが配置したserver.keyファイルが格納されています。server.keyファイルを上書きしないでください。
-
次のコマンドを実行して、証明書に書かれる情報を対話形式で入力し、証明書発行要求ファイルを作成します。
- Windowsの場合:
- <OpenSSLのインストール先>\bin\openssl req -config <OpenSSLのインストール先>\bin\openssl.cfg -sha256 -new -key <秘密鍵ファイル> -out <証明書発行要求ファイル>
- Linuxの場合:
- <OpenSSLのインストール先>/bin/openssl req -config <OpenSSLのインストール先>/bin/openssl.cfg -sha256 -new -key <秘密鍵ファイル> -out <証明書発行要求ファイル>
オプション
- key
- 手順1で作成した秘密鍵ファイル名を指定します。
- out
- 作成する証明書発行要求の出力先パスを指定します。出力先パスに同じ名称のファイルがある場合、ファイルが上書きされます。
入力する情報を次に示します。
項目
説明
Country Name
(必須)2 文字の国コードを指定します。
State or Province Name
(必須)都道府県名を指定します。
Locality Name
(任意)市区町村名または地域名を指定します。
Organization Name
(必須)組織名を指定します。
Organization Unit Name
(任意)組織の構成単位名を指定します。
Common Name
(必須)REST APIサーバの IP アドレスまたはホスト名を入力します。
Email Address
(任意)メールアドレスを指定します。
A challenge password
(任意)証明書を破棄するときに必要になるパスワードを指定します。
An optional company name
(任意)別の組織名を指定します。
-
手順2で作成した証明書発行要求を認証局に送付します。
認証局へのサーバ証明書の申請は、通常、オンラインでできます。作成したREST APIサーバの証明書発行要求を任意の認証局に送信し、電子署名を受けます。
X.509 PEM 形式のサーバ証明書を発行してもらう必要があります。申請方法については、使用する認証局のWebサイトなどで確認してください。また、証明書の署名アルゴリズムに認証局が対応していることを確認してください。
- メモ
-
- 認証局からの返答は保存しておいてください。
- 認証局が発行する証明書には有効期限があります。期限が切れる前に再発行してもらう必要があります。
証明書の有効期限を確認するには、次のコマンドを実行してください。
Windowsの場合:
<OpenSSLのインストール先>\bin\openssl x509 -in <サーバ証明書ファイル> -text -noout
Linuxの場合:
<OpenSSLのインストール先>/bin/openssl x509 -in <サーバ証明書ファイル> -text -noout
- ヒント
-
入手したサーバ証明書は、次の場所にcreatedServer.crtというファイル名で保存しておくことをお勧めします。
- Windowsの場合:
- <REST APIのインストール先>\oss\apache\conf\ssl.crt\createdServer.crt
- Linuxの場合:
- <REST APIのインストール先>/oss/apache/conf/ssl.crt/createdServer.crt
このディレクトリには、REST APIが配置したserver.crtファイルが格納されています。server.crtファイルを上書きしないでください。
-
REST APIのサービスを停止します。
-
user-httpsd-certificate.confファイルを編集して、秘密鍵ファイルおよびサーバ証明書ファイルを設定します。
user-httpsd-certificate.confファイルの格納場所
- Windowsの場合:
- <REST APIのインストール先>\oss\apache\conf\userextra\user-httpsd-certificate.conf
- Linuxの場合:
- <REST APIのインストール先>/oss/apache/conf/userextra/user-httpsd-certificate.conf
user-httpsd-certificate.confファイルのSSLCertificateKeyFileおよびSSLCertificateFileに次の内容を指定します。
- SSLCertificateKeyFile
- 手順1で作成した秘密鍵のファイル名を絶対パスで指定します。シンボリックリンクやジャンクションを指定しないでください。
- SSLCertificateFile
- 手順3で認証局から発行されたサーバ証明書のファイル名を絶対パスで指定します。シンボリックリンクやジャンクションを指定しないでください。
user-httpsd-certificate.confファイルの指定例
- Windowsの場合:
-
SSLCertificateKeyFile "C:\Program Files\HiCommand\ConfManager\oss\apache\conf\ssl.key\createdServer.key"
SSLCertificateFile "C:\Program Files\HiCommand\ConfManager\oss\apache\conf\ssl.crt\createdServer.crt"
- Linuxの場合:
-
SSLCertificateKeyFile "/opt/HiCommand/ConfManager/oss/apache/conf/ssl.key/createdServer.key"
SSLCertificateFile "/opt/HiCommand/ConfManager/oss/apache/conf/ssl.crt/createdServer.crt"
-
REST APIのサービスを起動します。