ファイナンス、情報通信技術のスキル・アグリゲーション・サイト

' . iseeit.jp 情報通信技術 . '

Mosquitto(MQTT Broker)を Windows と Ubuntu にインストール

Mosquitto(MQTT Broker)1.4.11 https://mosquitto.org を Windows 10 と、その Windows 10 マシンの Virtual Box 上の Ubuntu 16.04 LTS(ゲスト OS)にそれぞれインストールします。

相互に Subscribe 、Publish のコマンドラインクライアントで動作を確認、SSL/TLS の対応、Bridge の動作確認を行います。

Mosquitto を Windows 10 にインストール

https://mosquitto.org/download/ の Binary Instration より Windows 用の mosquitto-1.4.11-install-win32.exe をダウンロードして実行します。

Mosquitto のインストール後、インストール中に表示された、必要な DLL を Mosquitto のインストールディレクトリにコピーします。

「OpenSSL - install 'Win32 OpenSSL vXXXXX Light' then copy dlls to the mosquitto directory」は、http://slproweb.com/products/Win32OpenSSL.html より Win32OpenSSL_Light-1_0_2k.exe をダウンロードして実行後、OpenSSL のインストール先 C:¥OpenSSL-Win32¥bin から libeay32.dll と ssleay32.dll をコピーします。

「pthreads - copy 'pthreadVC2.dll' to the mosquitto directory」は、ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/dll/x86/ より pthreadVC2.dll をダウンロードします。

そして、「Windows管理ツール」の「サービス」にて、Mosquitto Broker を起動します。

なお、実行時に、VCRUNTIME140.dll がないというときは、Microsoft Visual C++ 2015 再頒布可能パッケージ Update 3 をインストールします。

また、MSVCR100.dll がないというときは、Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x86) をインストールします。

mosquitto.conf は、インストール直後のデフォルトの状態ままから説明をはじめます。以降、その都度、設定を追加します。

インストール直後の mosquitto.conf のおおまかな構成を書き出してみました。

  • # General configuration
  • # Default listener
    • # Certificate based SSL/TLS support
    • # Pre-shared-key based SSL/TLS support
  • # Extra listeners
    • # Certificate based SSL/TLS support
    • # Pre-shared-key based SSL/TLS support
  • # Persistence
  • # Logging
  • # Security
    • # Default authentication and topic access control
    • # Authentication and topic access plugin options
  • # Bridges
    • # Certificate based SSL/TLS support
    • # PSK based SSL/TLS support
  • # External config files
  • # rsmb options - unlikely to ever be supported

https://mosquitto.org/documentation/

Mosquitto を Ubuntu 16.04 LTS にインストール

先に Mosquitto をインストールした Windows 10 マシンの Virtual Box 上の Ubuntu 16.04 LTS(ゲスト OS)に Mosquitto をインストールします。



$ sudo apt-get install mosquitto mosquitto-clients

バージョン 1.4.8 がインストールされました。



$ sudo add-apt-repository ppa:mosquitto-dev/mosquitto-ppa
$ sudo apt-get update
$ sudo apt-get upgrade

現時点で最新のバージョン 1.4.11 がインストールされました。

service コマンドで start 、stop などします。



$ sudo service mosquitto start

さて、Windows 10(ホスト OS)と Ubuntu 16.04 LTS(ゲスト OS)のネットワーク接続のために、Virtual Box のネットワークの設定で、アダプター2を有効化して、ホストオンリーアダプターを割り当てました。

ちなみに、私のマシンで確認したとき、Windows 10(ホスト OS)側の IP アドレスは 192.168.56.1、Ubuntu 16.04 LTS(ゲスト OS)側の IP アドレスは、192.168.56.101 でした。

以降の説明では、これらの IP アドレスをコマンドラインの例や設定例で使用します。

Windows 10(ホスト OS):

192.168.56.1

Ubuntu 16.04 LTS(ゲスト OS):

192.168.56.101

また、「Paho(MQTT Client Library)サンプルプログラム(Python、JavaScript)」では、mosquitto.conf に WebSocket を使用する設定を追加しています。



# WebSocket listener
listener 11883
protocol websockets

# Certificate based SSL/TLS support
listener 18883
protocol websockets
cafile   /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile  /etc/mosquitto/certs/server.key

参考として、Windows10 64bit 版で確認していましたので、 Bash on Ububtu on Windows (Ubuntu 16.04 LTS)にも Mosquitto をインストールしてみました。現時点では、次に説明する Mosquitto Cilent ツールの mosquitto_sub、mosquitto_pub が、Windows 10(ホスト OS)と Ubuntu 16.04 LTS(ゲスト OS)の両方の Mosquitto Broker に対して動作することを確認しています。さらに、 Creators Update 後の Bash on Ububtu on Windows では、Mosquitto Broker の動作も確認しています。

Windows 10(ホスト OS)でコマンドラインクライアントの確認

Windows 10(ホスト OS)でコマンドプロンプトを起動して、Mosquitto のインストールディレクトリへ移動します。

Windows 10(ホスト OS)へ Subscribe。



> mosquitto_sub -t test

Windows 10(ホスト OS)へ Publish。



> mosquitto_pub -t test -m Message

Ubuntu 16.04 LTS(ゲスト OS)へ Subscribe。



> mosquitto_sub -t test -h 192.168.56.101

Ubuntu 16.04 LTS(ゲスト OS)へ Publish。



> mosquitto_pub -t test -h 192.168.56.101 -m Message

Ubuntu 16.04 LTS(ゲスト OS)でコマンドラインクライアントの確認

Ubuntu 16.04 LTS(ゲスト OS)で端末を起動します。

Ubuntu 16.04 LTS(ゲスト OS)へ Subscribe。



$ mosquitto_sub -t test

Ubuntu 16.04 LTS(ゲスト OS)へ Publish。



$ mosquitto_pub -t test -m Message

Windows 10(ホスト OS)へ Subscribe。



$ mosquitto_sub -t test -h 192.168.56.1

Windows 10(ホスト OS)へ Publish。



$ mosquitto_pub -t test -h 192.168.56.1 -m Message

Mosquitto 用に SSL 証明書を作成

SSL 証明書は、プライベート証明書を作成しました。手順については、以下も参照してください。

https://mosquitto.org/documentation/

プライベート認証局でプライベート SSL/TLS 証明書を発行する

作成した証明書や鍵は、それぞれ次のディレクトリへ保管しました。

Windows 10(ホスト OS)では

C:¥mosquitto¥certs

Ubuntu 16.04 LTS(ゲスト OS)では

/etc/mosquitto/certs

また、それぞれの ca.crt は交換して保存しました。

Windows 10(ホスト OS)では

C:¥mosquitto¥certs¥UbuntuCA.crt

Ubuntu 16.04 LTS(ゲスト OS)では

/etc/mosquitto/certs/WindowsCA.crt

さらに、それぞれの client.crt、client.key も交換して保存しました。

Windows 10(ホスト OS)では

C:¥mosquitto¥certs¥UbuntuClient.crt

C:¥mosquitto¥certs¥UbuntuClient.key

Ubuntu 16.04 LTS(ゲスト OS)では

/etc/mosquitto/certs/WindowsClient.crt

/etc/mosquitto/certs/WindowsClient.key

Mosquitto に SSL/TLS を設定

mosquitto.conf に SSL 証明書等の設定を追加します。

https://mosquitto.org/documentation/

Windows 10(ホスト OS)の mosquitto.conf の設定例。



# Default listener
listener 1883

# Certificate based SSL/TLS support
listener 8883
cafile   c:¥mosquitto¥certs¥ca.crt
certfile c:¥mosquitto¥certs¥server.crt
keyfile  c:¥mosquitto¥certs¥server.key

Ubuntu 16.04 LTS(ゲスト OS)の mosquitto.conf の設定例。



# Default listener
listener 1883

# Certificate based SSL/TLS support
listener 8883
cafile   /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile  /etc/mosquitto/certs/server.key

Windows 10(ホスト OS)でサーバ証明書による確認

Windows 10(ホスト OS)でコマンドプロンプトを起動して、Mosquitto のインストールディレクトリへ移動します。

Windows 10(ホスト OS)へ Subscribe。



> mosquitto_sub --cafile c:¥mosquitto¥certs¥ca.crt -t test -p 8883

Windows 10(ホスト OS)へ Publish。



> mosquitto_pub --cafile c:¥mosquitto¥certs¥ca.crt -t test -p 8883 -m Message

Ubuntu 16.04 LTS(ゲスト OS)へ Subscribe。



> mosquitto_sub --cafile c:¥mosquitto¥certs¥UbuntuCA.crt -t test -p 8883 -h 192.168.56.101

Ubuntu 16.04 LTS(ゲスト OS)へ Publish。



> mosquitto_pub --cafile c:¥mosquitto¥certs¥UbuntuCA.crt -t test -p 8883 -h 192.168.56.101 -m Message

Ubuntu 16.04 LTS(ゲスト OS)でサーバ証明書による確認

Ubuntu 16.04 LTS(ゲスト OS)で端末を起動します。

Ubuntu 16.04 LTS(ゲスト OS)へ Subscribe。



$ mosquitto_sub --cafile /etc/mosquitto/certs/ca.crt -t test -p 8883

Ubuntu 16.04 LTS(ゲスト OS)へ Publish。



$ mosquitto_pub --cafile /etc/mosquitto/certs/ca.crt -t test -p 8883 -m Message

Windows 10(ホスト OS)へ Subscribe。



$ mosquitto_sub --cafile /etc/mosquitto/certs/WindowsCA.crt -t test -p 8883 -h 192.168.56.1

Windows 10(ホスト OS)へ Publish。



$ mosquitto_pub --cafile /etc/mosquitto/certs/WindowsCA.crt -t test -p 8883 -h 192.168.56.1 -m Message

Windows 10(ホスト OS)でクライアント証明書による確認

Windows 10(ホスト OS)でコマンドプロンプトを起動して、Mosquitto のインストールディレクトリへ移動します。

Windows 10(ホスト OS)へ Subscribe。



> mosquitto_sub --cafile c:¥mosquitto¥certs¥ca.crt --cert c:¥mosquitto¥certs¥client.crt --key c:¥mosquitto¥certs¥client.key -t test -p 8883

Windows 10(ホスト OS)へ Publish。



> mosquitto_pub --cafile c:¥mosquitto¥certs¥ca.crt --cert c:¥mosquitto¥certs¥client.crt --key c:¥mosquitto¥certs¥client.key -t test -p 8883 -m Message

Ubuntu 16.04 LTS(ゲスト OS)へ Subscribe。



> mosquitto_sub --cafile c:¥mosquitto¥certs¥UbuntuCA.crt --cert c:¥mosquitto¥certs¥UbuntuClient.crt --key c:¥mosquitto¥certs¥UbuntuClient.key --insecure -t test -p 8883 -h 192.168.56.101

Ubuntu 16.04 LTS(ゲスト OS)へ Publish。



> mosquitto_pub --cafile c:¥mosquitto¥certs¥UbuntuCA.crt --cert c:¥mosquitto¥certs¥UbuntuClient.crt --key c:¥mosquitto¥certs¥UbuntuClient.key --insecure -t test -p 8883 -h 192.168.56.101 -m Message

Ubuntu 16.04 LTS(ゲスト OS)でクライアント証明書による確認

Ubuntu 16.04 LTS(ゲスト OS)で端末を起動します。

Ubuntu 16.04 LTS(ゲスト OS)へ Subscribe。



$ mosquitto_sub --cafile /etc/mosquitto/certs/ca.crt --cert /etc/mosquitto/certs/client.crt --key /etc/mosquitto/certs/client.key -t test -p 8883

Ubuntu 16.04 LTS(ゲスト OS)へ Publish。



$ mosquitto_pub --cafile /etc/mosquitto/certs/ca.crt --cert /etc/mosquitto/certs/client.crt --key /etc/mosquitto/certs/client.key -t test -p 8883 -m Message

Windows 10(ホスト OS)へ Subscribe。



$ mosquitto_sub --cafile /etc/mosquitto/certs/WindowsCA.crt --cert /etc/mosquitto/certs/WindowsClient.crt --key /etc/mosquitto/certs/WindowsClient.key --insecure -t test -p 8883 -h 192.168.56.1

Windows 10(ホスト OS)へ Publish。



$ mosquitto_pub --cafile /etc/mosquitto/certs/WindowsCA.crt --cert /etc/mosquitto/certs/WindowsClient.crt --key /etc/mosquitto/certs/WindowsClient.key --insecure -t test -p 8883 -h 192.168.56.1 -m Message

Mosquitto の Bridge を設定

Ubuntu 16.04 LTS(ゲスト OS)側の mosquitto.conf に Bridge の設定を追加します。

https://mosquitto.org/documentation/

なお、Bridge に使用する証明書は、Windows 10(ホスト OS)で発行したクライアント証明書とします。



# Bridges
connection windows-bridge
address    192.168.56.1:8883
topic      test both

# Certificate based SSL/TLS support
bridge_cafile   /etc/mosquitto/certs/WindowsCA.crt
bridge_certfile /etc/mosquitto/certs/WindowsClient.crt
bridge_keyfile  /etc/mosquitto/certs/WindowsClient.key
bridge_insecure true

Mosquitto の Bridge を確認

Windows 10(ホスト OS)と Ubuntu 16.04 LTS(ゲスト OS)の両方で Subscribe します。そして、それぞれで Publish したときに、それぞれ両方でメッセージが出力されることを確認します。

Windows 10(ホスト OS)のコマンドプロンプトで Subscribe。



> mosquitto_sub --cafile c:¥mosquitto¥certs¥ca.crt -t test -p 8883

Ubuntu 16.04 LTS(ゲスト OS)の端末で Subscribe 。



$ mosquitto_sub --cafile /etc/mosquitto/certs/ca.crt -t test -p 8883

Windows 10(ホスト OS)で Publish。



> mosquitto_pub --cafile c:¥mosquitto¥certs¥ca.crt -t test -p 8883 -m MessageFromWindowsToBoth

Ubuntu 16.04 LTS(ゲスト OS)で Publish。



$ mosquitto_pub --cafile /etc/mosquitto/certs/ca.crt -t test -p 8883 -m MessageFromUbuntuToBoth

ファイナンシャル・プランニング
6つの係数

終価係数 : 元本を一定期間一定利率で複利運用したとき、将来いくら になるかを計算するときに利用します。

現価係数 : 将来の一定期間後に目標のお金を得るために、現在いくら の元本で複利運用を開始すればよいかを計算するときに利用します。

年金終価係数 : 一定期間一定利率で毎年一定金額を複利運用で 積み立て たとき、将来いくら になるかを計算するときに利用します。

年金現価係数 : 元本を一定利率で複利運用しながら、毎年一定金額を一定期間 取り崩し ていくとき、現在いくら の元本で複利運用を開始すればよいかを計算するときに利用します。

減債基金係数 : 将来の一定期間後に目標のお金を得るために、一定利率で一定金額を複利運用で 積み立て るとき、毎年いくら ずつ積み立てればよいかを計算するときに利用します。

資本回収係数 : 元本を一定利率で複利運用しながら、毎年一定金額を一定期間 取り崩し ていくとき、毎年いくら ずつ受け取りができるかを計算するときに利用します。

積み立て&取り崩しモデルプラン

積立金額→年金額の計算 : 年金終価係数、終価係数、資本回収係数を利用して、複利運用で積み立てた資金から、将来取り崩すことのできる年金額を計算します。

年金額→積立金額の計算 : 年金現価係数、現価係数、減債基金係数を利用して、複利運用で将来の年金プランに必要な資金の積立金額を計算します。