EDM の 暗号化通信のセットアップ (管理サーバー)¶
管理サーバーにおける、暗号化通信のセットアップを行います。
本手順によるセットアップ後、システム構成の全体構成図に記載のポート番号の通り、コンポーネント間の通信が変更されます。 また、暗号化通信の際、下表にある証明書等のファイルを使用します。
| コンポーネント名 | ファイルパス | ファイルの種類 |
|---|---|---|
| Nebula | /opt/tomcat/8060/conf/server_keystore.jks | キーストア |
| CAP | /opt/nec/pf/ice/msgrouter_core/conf/server_keystore.jks | キーストア |
| Nginx | /etc/nginx/conf.d/<svcert> | サーバー証明書 |
| /etc/nginx/conf.d/<svkey> | サーバー秘密鍵 |
管理サーバーで、下記手順にしたがってセットアップを行います。
事前準備¶
-
以下のファイルを、任意のディレクトリに配置します。
- 管理サーバーの秘密鍵 (以下、ファイル名を
<svkey>とする) - 管理サーバーの証明書 (以下、ファイル名を
<svcert>とする) - CA証明書 (以下、ファイル名を
<cacert>とする)
- 管理サーバーの秘密鍵 (以下、ファイル名を
-
キーストアファイルのパスワードを決めておきます。
以下、このパスワードを <keystore_password> とします。
-
以下のコマンドを実行し、キーストアファイルを生成します。
# keytool -import -alias root -keystore server_keystore.jks -file <cacert> キーストアのパスワードを入力してください: ( <keystore_password> を入力 ) 新規パスワードを再入力してください: ( <keystore_password> を入力 ) ... この証明書を信頼しますか。 [いいえ]: ( はい を入力 ) # openssl pkcs12 -export -inkey <svkey> -in <svcert> -name edm -out keystore.pkcs12 -certfile <cacert> Enter Export Password: ( <keystore_password> を入力 ) Verifying - Enter Export Password: ( <keystore_password> を入力 ) # keytool -importkeystore -srckeystore keystore.pkcs12 -destkeystore server_keystore.jks -srcstoretype pkcs12 -deststoretype jks キーストアkeystore.pkcs12をserver_keystore.jksにインポートしています... 出力先キーストアのパスワードを入力してください: ( <keystore_password> を入力 ) ソース・キーストアのパスワードを入力してください: ( <keystore_password> を入力 ) 別名edmのエントリのインポートに成功しました。 インポート・コマンドが完了しました: 1件のエントリのインポートが成功しました。0件のエントリのインポートが失敗したか取り消されました -
以下のコマンドを実行し、CAPとNginxのディレクトリにファイルを格納します。
# cp ./server_keystore.jks /opt/nec/pf/ice/msgrouter_core/conf/ # cp ./server_keystore.jks /opt/tomcat/8060/conf/ # cp ./<svcert> /etc/nginx/conf.d/ # cp ./<svkey> /etc/nginx/conf.d/
CAP の暗号化¶
-
以下を実行します。
# cd /opt/nec/pf/ice/msgrouter_core/conf/ # cp core_config.json core_config.json.bak -
以下を実行します。
# vi core_config.jsonmqtt.urlの値を、以下のように変更して上書き保存します。{ "mqtt": { "url": "mqtt+nio+ssl://0.0.0.0:8883", (省略) } -
以下を実行します。
# diff core_config.json core_config.json.bak出力結果が以下のようになることを確認します。
< "url": "mqtt+nio+ssl://0.0.0.0:8883", --- > "url": "mqtt+nio://0.0.0.0:1883", -
以下を実行します。
# mkdir -p /root/backup_for_encrypting/ice_message_router # cd /usr/lib/systemd/system/ # cp ice-message-router.service /root/backup_for_encrypting/ice_message_router/ice-message-router.service.bak -
以下を実行します。
# vi ice-message-router.serviceExecStartの値を、以下のように変更して上書き保存します。... ExecStart=/usr/bin/java -classpath '/opt/nec/pf/ice/msgrouter_core/lib/*' -Dlog4j.configurationFile=/opt/nec/pf/ice/msgrouter_core/conf/log4j2.xml -Djava.security.auth.login.config=/opt/nec/pf/ice/msgrouter_core/conf/login.config -Djavax.net.ssl.keyStore=/opt/nec/pf/ice/msgrouter_core/conf/server_keystore.jks -Djavax.net.ssl.keyStorePassword=<keystore_password> -Djavax.net.ssl.keyStoreType=jks -Djavax.net.ssl.trustStore=/opt/nec/pf/ice/msgrouter_core/conf/server_keystore.jks -Djavax.net.ssl.trustStorePassword=<keystore_password> -Djavax.net.ssl.trustStoreType=jks com.nec.connexive.ice.router.Launcher ... -
以下を実行します。
# diff ice-message-router.service /root/backup_for_encrypting/ice_message_router/ice-message-router.service.bak出力結果が以下のようになることを確認します。
< ExecStart=/usr/bin/java -classpath '/opt/nec/pf/ice/msgrouter_core/lib/*' -Dlog4j.configurationFile=/opt/nec/pf/ice/msgrouter_core/conf/log4j2.xml -Djava.security.auth.login.config=/opt/nec/pf/ice/msgrouter_core/conf/login.config -Djavax.net.ssl.keyStore=/opt/nec/pf/ice/msgrouter_core/conf/server_keystore.jks -Djavax.net.ssl.keyStorePassword=<keystore_password> -Djavax.net.ssl.keyStoreType=jks -Djavax.net.ssl.trustStore=/opt/nec/pf/ice/msgrouter_core/conf/server_keystore.jks -Djavax.net.ssl.trustStorePassword=<keystore_password> -Djavax.net.ssl.trustStoreType=jks com.nec.connexive.ice.router.Launcher --- > ExecStart=/usr/bin/java -classpath '/opt/nec/pf/ice/msgrouter_core/lib/*' -Dlog4j.configurationFile=/opt/nec/pf/ice/msgrouter_core/conf/log4j2.xml -Djava.security.auth.login.config=/opt/nec/pf/ice/msgrouter_core/conf/login.config com.nec.connexive.ice.router.Launcher -
サービスを再起動します。
# systemctl daemon-reload
# systemctl restart ice-message-router
Nginx の暗号化¶
-
以下を実行します。
# cd /opt/nec/pf/ice/config/ # cp -p backendapi1.config.json backendapi1.config.json.back -
以下を実行します。
# vi backendapi1.config.jsonfileDelivery.baseUrlを、以下のように変更します。管理サーバーのIPアドレスはサーバー証明書作成時に指定したコモンネームに合わせて変更します。"fileDelivery": { "baseUrl":"https://<管理サーバーのIPアドレス>/fileserver/", -
以下を実行します。
# diff backendapi1.config.json backendapi1.config.json.back出力結果が以下のようになることを確認します。
< "baseUrl":"https://<管理サーバーのIPアドレス>/fileserver/", --- > "baseUrl":"http://<管理サーバーのIPアドレス>:80/fileserver/", -
以下を実行します。
# cd /etc/nginx/conf.d/ # cp default.conf default.conf.back -
以下を実行します。
# vi default.conf-
ssl_certificate,ssl_certificate_keyの設定を、以下のように変更します。ssl_certificate /etc/nginx/conf.d/<svcert>; ssl_certificate_key /etc/nginx/conf.d/<svkey>; -
下記の行まで移動します。
# SSE PUSHサーバー location /ssepush/ { proxy_pass http://ssepush_servers/ssepush/; proxy_buffering off; proxy_cache off; proxy_redirect http:// https://; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header Connection ""; proxy_connect_timeout 5m; proxy_read_timeout 5m; proxy_send_timeout 5m; }その下の行に、以下を追記します。
# ICE File Server location /fileserver/ { proxy_buffering off; proxy_request_buffering on; proxy_pass http://ice_fileserver/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } -
最下行まで移動し、以下を追記します。
# ICE File Server upstream ice_fileserver { server 127.0.0.1:22402; }
-
-
以下を実行します。
# diff default.conf default.conf.back出力結果が以下のようになることを確認します。
< ssl_certificate /etc/nginx/conf.d/<svcert>; < ssl_certificate_key /etc/nginx/conf.d/<svkey>; --- > ssl_certificate /etc/pki/tls/certs/server.crt; > ssl_certificate_key /etc/pki/tls/certs/server.key;< < # ICE File Server < location /fileserver/ { < proxy_buffering off; < proxy_request_buffering on; < proxy_pass http://ice_fileserver/; < < proxy_http_version 1.1; < proxy_set_header Upgrade $http_upgrade; < proxy_set_header Connection "upgrade"; < }< } < < # ICE File Server < upstream ice_fileserver { < server 127.0.0.1:22402; -
以下を実行します。
# cd /opt/tomcat/8060/conf/ # cp -p server.xml server.xml.back -
以下を実行します。
# vi server.xml下記のコメントがある行まで移動します。
<!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 This connector uses the NIO implementation. The default SSLImplementation will depend on the presence of the APR/native library and the useOpenSSL attribute of the AprLifecycleListener. Either JSSE or OpenSSL style configuration may be used regardless of the SSLImplementation selected. JSSE style configuration is used below. -->その下の行に、以下を追記します。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="300" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keyAlias="edm" keystorePass="<keystore_password>" keystoreFile="/opt/tomcat/8060/conf/server_keystore.jks" keystoreType="JKS" /> -
以下を実行します。
# diff server.xml server.xml.back出力結果が以下のようになることを確認します。
< <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" < maxThreads="300" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" < keyAlias="edm" keystorePass="<keystore_password>" keystoreFile="/opt/tomcat/8060/conf/server_keystore.jks" keystoreType="JKS" /> -
以下を実行します。
# mkdir -p /root/backup_for_encrypting/tomcat_8060/webapps # cd /opt/tomcat/8060/webapps/<テナントIDの値>/ # cp -p config /root/backup_for_encrypting/tomcat_8060/webapps/config.bak -
以下を実行します。
# vi configbaseUriの値を、以下のように変更します。管理サーバーのIPアドレスはサーバー証明書作成時に指定したコモンネームに合わせて変更します。module.exports = {(省略) "baseUri": "https://<管理サーバーのIPアドレス>:8443/api/",(省略)}} -
以下を実行します。
# diff config /root/backup_for_encrypting/tomcat_8060/webapps/config.bak出力結果が以下のようになることを確認します。
< module.exports = {(省略) "baseUri": "https://<管理サーバーのIPアドレス>:8443/api/",(省略)}} --- > module.exports = {(省略) "baseUri": "http://<管理サーバーのIPアドレス>:8060/api/",(省略)}} -
以下を実行します。
# systemctl restart ice-message-router # systemctl restart tomcat_8060 # systemctl restart tomcat_8430 # systemctl restart nginx # systemctl status ice-message-router (`Active: active (running)`になっていることを確認) # systemctl status tomcat_8060 (`Active: active (running)`になっていることを確認) # systemctl status tomcat_8430 (`Active: active (running)`になっていることを確認) # systemctl status nginx (`Active: active (running)`になっていることを確認) -
以下を実行し、ポートの開放・閉鎖を行います。
# firewall-cmd --add-port=8443/tcp --zone=public --permanent # firewall-cmd --remove-port=80/tcp --zone=public --permanent # firewall-cmd --remove-port=8060/tcp --zone=public --permanent # firewall-cmd --remove-port=1883/tcp --zone=public --permanent # firewall-cmd --reload -
以下を実行します。
# firewall-cmd --list-all実行結果にあるports の行について、以下を確認します。
- 8443/tcp が表示されること
- 80/tcp が表示されないこと
- 8060/tcp が表示されないこと
- 1883/tcp が表示されないこと
動作確認¶
-
「EDM の 暗号化通信のセットアップ (エッジ機器)」に沿ってセットアップが終わっていることを確認します。
-
https://<管理サーバーのIPアドレス>:8443/<テナントIDの値>/にブラウザからアクセスします。管理サーバーのIPアドレスはサーバー証明書作成時に指定したコモンネームに合わせて変更します。 -
管理画面にログインします。認証情報は、/root/EDM2/edm_manager/tools/Tenant-Add/group_vars/all.yml ファイルを参照してください。
- メールアドレス:
NEBULA_EDMSYSTEM_USER_EMAIL の値 - パスワード:
NEBULA_EDMSYSTEM_USER_PASSWORD の値
- メールアドレス:
-
画面左側にあるサイドナビゲーションより、「配布 > タスク」を選択します。
-
すべてのタスクにチェックを入れてから、ゴミ箱アイコンを押下し、タスクを削除します。
-
画面左側にあるサイドナビゲーションより、「配布 > パッケージ」を選択します。
-
すべてのパッケージにチェックを入れてから、ゴミ箱アイコンを押下し、パッケージを削除します。
-
「2-3. システムの動作確認」の記載にしたがって、動作確認を行います。