- 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」
|
|