はじめに
pkgsrc/net/mosquitto-2.1.2nb1を使う機会があったのだが、なるべく安全な方法で利用したいと思っていた。 TLS証明書を利用して暗号化された経路で通信し、接続にはユーザーIDとパスワードによるユーザー認証を利用し、ユーザー毎にアクセス制限を設定したい。 また、受信した情報はファイルに保存しておきたい。
設定は/usr/pkg/etc/mosquitto.confに書けば良い。
TLS証明書を利用する
Let's Encryptで取得したTLS証明書が使える。 以下のように設定すれば良い。 これは、pkgsrc/security/acmeshを使って取得したものだが、どのような方法で取得しても良い。
certfile /var/db/mosquitto/.acme.sh/MYHOSTNAME.net_ecc/fullchain.cer keyfile /var/db/mosquitto/.acme.sh/MYHOSTNAME_ecc/app4.ryoon.net.key cafile /var/db/mosquitto/.acme.sh/MYHOSTNAME_ecc/ca.cer
接続にユーザーIDとパスワードによるユーザー認証を利用する
ユーザー毎にアクセス制限を設定するためにも、ユーザーIDとパスワードによりユーザー認証をした上で接続する必要がある。 これは、以下のように設定すれば良い。
password_file /var/db/mosquitto/mosquitto.passwd
この中身は、mosquitto_passwd(1)で生成すれば良い。
以下のようにユーザーIDとパスワードをmosquitto.passwdとして用意しておき、mosquitto_passwdコマンドでパスワードをハッシュ化したファイルに変換すれば良い。
ハッシュアルゴリズムも選択できるようだ。
$ cat mosquitto.passwd user001:password001 user002:password002 $ mosquitto_passwd -U mosquitto.passwd $ cat mosquitto.passwd user001:$7$1000$qmp3mSmMucnEwhH3vLWRLquFBPYVQFdALWJwvihS7UI6d2cTKSma77hbTeYFSoJ+M/WTowwzUg7klW+7ClbNng==$YxIm/PFeBoiCN9xBvV9XR1XWK6VqIJrwE432iX7b5ygnoyKKMRSHf9rk/9Lw02Gp9FWfhwnPU8ugzPJUIDzImA== user002:$7$1000$x8FPjLROciMpi7q7OIkV+cdzEf+Eo02kGMuPaWALcoS9Vt7G9J/um376TaGuSDOj76HSvL8HIla8HHQx7DkJGQ==$3V1pN+4ApuSBPtnyzxfSWSnUb01Q0EjQ6LmkAQb+VetHuxCkcJkzEhQyG2Y6F7MWgG1DqfyrJIWCF7pYqHuquQ==
ユーザー毎にアクセス制限を設定する
まず、アクセス制限の内容を読み込むように/usr/pkg/etc/mosquitto.confに以下のように設定する。
acl_file /var/db/mosquitto/mosquitto.acl
その上で、/var/db/mosquitto/mosquitto.aclを以下のように設定する。
user001は全てのトピックに読み書きでき、user002は全てのトピックに書き込みだけできるようにする。
データと投入するクライアントはuser002でアクセスして来ることを想定し、user001で接続することを想定している。
user001は書き込みはできなくても良いのだが。
$ cat /var/db/mosquitto/mosquitto.acl user user001 topic readwrite # user user002 topic write #
受信したデータをファイルに保存する
/var/db/mosquitto/mosquitto.dbに保存するように設定する。
autosave_interval 60 autosave_on_changes true persistence true persistence_file mosquitto.db persistence_location /var/db/mosquitto
その他
他にも設定してある内容は以下のようだ。
# mosquitto daemonを動かすユーザー user mosquitto # 待ち受けるポート istener 8883 # ログとしてsyslogに出力するレベル log_type debug
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。