MQTT - ブローカー - SSH - 証明書作成


クラウディア 


1. 概要
2. インストール
3. 証明書作成
4. 参考サイト

1. 概要

 「SSH」を使うので、証明書を作成します。  サーバがインターネットへの公開サーバではありませんので、自己証明書(いわゆるなんちゃって証明書)を作成します。

2. インストール

 「OpenSSL」が必要になりますので、インストールしておきます。  以下、本ページは、すべて「root」ユーザ権限で。

apt update

apt upgrade -y

apt install -y openssl

3. 証明書作成

 下記のスクリプトを作成します。

#!/usr/bin/sh

cd /etc/mosquitto/certs/ || exit 1

INTERFACE=$(ip route | grep '^default' | awk '{print $5}')
IP_ADDRESS=$(ip -4 addr show "$INTERFACE" | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
echo "subjectAltName = IP:$IP_ADDRESS" > server.ext
echo "extendedKeyUsage = clientAuth" > client.ext

openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -days 3650 -out ca.crt -subj "/C=JP/ST=Some-State/O=Internet Widgits Pty Ltd/CN=MyCA"

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/C=JP/ST=Some-State/O=Internet Widgits Pty Ltd/CN=$IP_ADDRESS"
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650 -sha256 -extfile server.ext

openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr -subj "/C=JP/ST=Some-State/O=Internet Widgits Pty Ltd/CN=client"
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650 -sha256 -extfile client.ext
 5~8行で、サーバの「IP」アドレスを取得して、以降のパラメータファイルを作成しています。  10、11行で、「CA」認証局)用の鍵と証明書を作成しています。  13~15行で、サーバの秘密鍵「Private Key」(2048 ビット、RSA)、証明書署名要求「CSR」、サーバー証明書を作成して、「CA」で署名しています(期限、10年間)。  17~19行で、クライアント証明書を作成して「CA」で署名、クライアント鍵を作成、クライアント「CSR」を作成しています。  下記が表示されます。

Certificate request self-signature ok
subject=C = JP, ST = Some-State, O = Internet Widgits Pty Ltd, CN = ip_address
Certificate request self-signature ok
subject=C = JP, ST = Some-State, O = Internet Widgits Pty Ltd, CN = client
 ここまでの結果。

/etc/mosquitto/certs/
 に、下記のファイルが作成されているはずです。

ca.crt
ca.key
client.crt
client.csr
client.ext
client.key
server.crt
server.csr
server.ext
server.key
 パーミッションを設定します。

sudo chown mosquitto:mosquitto /etc/mosquitto/certs/server.key /etc/mosquitto/certs/server.crt
sudo chmod 600 /etc/mosquitto/certs/server.key
sudo chmod 644 /etc/mosquitto/certs/server.crt
sudo chmod 600 /etc/mosquitto/certs/client.key
sudo chmod 644 /etc/mosquitto/certs/client.crt ca.crt

4. 参考サイト

 本ページは、「ChatGPT」軍曹および下記のサイトを参考にさせていただきました。
【Mosquitto】MQTTブローカの構築・動作確認 (ユーザ認証・TLS暗号化まで) #mqtt

EaseUS
AbemaTV 無料体験