メインコンテンツまでスキップ

「Security」タグの記事が6件件あります

全てのタグを見る

Raspberry Pi で cockpit に mkcert を用いて証明書を作成し、サーバー (cockpit) とブラウザに設定する方法

· 約2分
ひかり
Main bloger

動作環境

以下の環境で設定を確認しました。

  • Raspberry Pi 5
  • AlmaLinux

各証明書の意味

  • raspberrypi.pem: サーバー証明書 (公開鍵) この証明書は raspberrypi というホスト名に対して発行された SSL 証明書です。Web ブラウザなどのクライアントがこの証明書を使ってサーバーの正当性を確認します。(サーバーにインストールするやつ)
  • raspberrypi+1.pem: サーバー証明書 (公開鍵)
    この証明書は raspberrypi <IP アドレス> というホスト名に対して発行された SSL 証明書です。同上
  • raspberrypi-key.pem:
    raspberrypi.pem に対応する秘密鍵です。サーバー側で保持し、SSL通信の暗号化・復号に使用されます。絶対に外部に漏らしてはいけません。 (サーバーにインストールするやつ)
  • raspberrypi+1-key.pem:
    raspberrypi+1.pem に対応する秘密鍵です。サーバー側で保持し、SSL通信の暗号化・復号に使用されます。絶対に外部に漏らしてはいけません。 同上
  • rootCA.pem: ローカルルート証明書 (公開鍵)
    mkcert が自動生成したローカルCA (認証局) の証明書です。クライアント (ブラウザなど) にこの証明書をインストールすることで、raspberrypi.pem を信頼できる証明書として扱えるようになります。
  • rootCA-key.pem: ローカル CA の秘密鍵 rootCA.pem に対応する秘密鍵で、mkcert がサーバー証明書 (例: raspberrypi.pem) を署名するために使います。mkcert が内部的に使用するもので、通常は触る必要はありません。

証明書の発行

mkcert コマンドを用いて証明書を発行します。発行後、サーバーに配置します。

mkcert raspberrypi <IP アドレス>

sudo cp raspberrypi+1-key.pem /etc/cockpit/ws-certs.d/raspberrypi.key
sudo cp raspberrypi+1.pem /etc/cockpit/ws-certs.d/raspberrypi.crt
sudo systemctl restart cockpit

ローカルルート証明書の場所を確認

PC にルート証明書をインストールするためのルート CA 証明書の場所を確認します。

mkcert -CAROOT

ルート証明書を PC にコピー

ルート証明書を PC にコピーします。

scp raspberrypi:/home/<USER>/.local/share/mkcert/rootCA.pem .
cp rootCA.pem rootCA.cer

Windows で証明書を登録

rootCA.cer を開き、証明書ストアで「信頼されたルート機関」で証明書を登録します。

Android 端末で証明書を登録

rootCA.pem を端末に移動し設定から登録します。

コマンドを叩いてローカル MCP の動きを見てみる

· 約3分
ひかり
Main bloger

処理の流れ

MCP を使用した場合、LLM クライアントでどのような流れで処理が行われるかを Copilot くんに聞きました。

以下、シーケンス図です。

ここで重要なのは、

  1. ①② ツール定義の取得
  2. ④ ツール定義の送信
  3. ⑦ ツール呼び出し要求
  4. ⑧⑨⑩⑪ ツール呼び出し
  5. ⑫ 実行結果の送信

です。

MCP にかかわる部分は、1. と 4. で、 Function calling とほぼ同じ部分が 2. と 3. と 5. です。

コマンドを叩いて呼び出してみる

ローカル MCP を標準入力で使用してみましょう。

Windows PowerShell を用いてコマンドをたたきます。

ツール一覧を取得

例として @modelcontextprotocol/server-filesystem のツール一覧を取得します。

> @{ jsonrpc = "2.0"; method = "tools/list"; id = 1 } | ConvertTo-Json -Compress | npx @modelcontextprotocol/server-filesystem $HOME | ConvertFrom-Json | ConvertTo-Json -Depth 10
Secure MCP Filesystem Server running on stdio
Allowed directories: [ 'C:\\Users\\hikari' ]
{
"result": {
"tools": [
{
"name": "read_file",
"description": "Read the complete contents of a file from the file system. Handles various text encodings and provides detailed error messages if the file cannot be read. Use this tool when you need to examine the contents of a single file. Only works within allowed directories.",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string"
}
},
"required": [
"path"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
},
...
]
}
}

tools/list を標準入力で与えることで、ツール一覧を JSON 形式で取得できます。

ツール呼び出し

ツールの情報をもとに呼び出してみます。

> @{ jsonrpc = "2.0"; method = "tools/call"; params = @{name = "read_file"; arguments = @{path = ".gitconfig"}}; id = 2 } | ConvertTo-Json -Compress -Depth 10 | npx @modelcontextprotocol/server-filesystem $HOME | ConvertFrom-Json | ConvertTo-Json -Depth 10
Secure MCP Filesystem Server running on stdio
Allowed directories: [ 'C:\\Users\\hikari' ]
{
"result": {
"content": [
{
"type": "text",
"text": "..."
}
]
},
"jsonrpc": "2.0",
"id": 2
}

Linux プロンプトを日本語化する方法

· 約1分
ひかり
Main bloger

Linux のプロンプトを日本語化する方法を紹介します。

1. 日本語ロケールのインストール

次に、日本語のロケールが存在しない場合は、それをインストールします。以下のコマンドを実行します。

sudo apt update
sudo apt install language-pack-ja

2. ロケールの設定

日本語のロケールを設定します。以下のコマンドを実行します。

sudo update-locale LANG=ja_JP.UTF8

3. システムの再起動

最後に、システムを再起動します。これにより、新しいロケール設定が反映されます。

sudo reboot

以上で、Linux プロンプトが日本語化されます。

RaspberryPi のプロンプトを日本語化する方法

· 約1分
ひかり
Main bloger

Raspberry Pi のプロンプトを日本語化する方法を紹介します。

1. ロケールの設定

日本語のロケールを設定します。以下のコマンドを実行します。

  1. スペースで以下のようにチェックを入れ OK する
  2. ja_JP.UTF-8 を選択し OK する
sudo dpkg-reconfigure locales

# [*] ja_JP.UTF-8 UTF-8

2. 再起動

再起動します。

sudo reboot

以上。

WSL2 で SSH のトンネルを使用して、WSL2 上のサーバーを LAN に公開する方法

· 約2分
ひかり
Main bloger

Step1. WSL 側に OpenSSH Server をインストール

WSL2 に OpenSSH Server をインストールします。 それと、sshd サービスを立ち上げます。

# WSL2 側
sudo apt install openssh-server
sudo service sshd start

Step2. Windows 側で公開鍵を登録

Windows に公開鍵を登録していない場合は、以下のコマンドを実行します。

# Windows 側
ssh-keygent -t ed25519

次に WSL2 に公開鍵を登録します。

# Windows 側
$pubkey = $(cat $HOME\.ssh\id_ed25519.pub)
wsl -- echo $pubkey `| tee -a `$HOME/.ssh/authorized_keys

Step3. SSH でトンネルを通す

Windows から WSL2 に対し、SSH 接続を行います。

# Windows 側
ssh (wsl -- hostname -I).trim() -g -L8081:localhost:8080

コマンドを区切って説明します。

  • (wsl -- hostname -I).trim() は WSL2 の IP アドレスを取得します
  • -g はポートを LAN にフォワーディングします (外部の端末から 192.168.x.x のようなアドレスで参照可能になります)
  • -L はローカルフォワードのオプションです。サーバーのポートをローカルに転送します
  • 8081localhost:8080 は ローカルの 8081 にアクセスすると、localhost:8080 に転送されるという意味です。 ここでいう localhost はサーバー側から見た localhost です

Step4. サーバーを立ち上げる

公開対象となるサーバーを WSL2 上で立ち上げます。

# WSL2 側
ruby -run -e httpd . # ディレクトリ一覧が公開される

Step5. サーバーにアクセスする

http://localhost:8081 または、http://<ipconfig で表示される IP アドレス>:8081 でサービスにアクセスできます。

トンネル接続によるデメリットとしては毎回トンネルを通すのが面倒なことです。 不安定ですが、netsh interface portproxy ~ による設定を行っても同じようにできます。

マイナンバーカード (マイナカード) 何に使った?

· 約6分
ひかり
Main bloger

平成 30 年に取得したマイナカード、 何に使ってどう便利だったかをまとめる。 不便なところもまとめる。

利用したこと

  1. コンビニで証明書印刷
    • 住民票の写し
    • 所得証明書

わざわざ、市役所 (出張所) に出向き、並ぶ必要がないので便利。

  1. 本人確認
    • スマホの通信契約
    • 証券会社の口座開設
    • 銀行の口座開設
    • なんとか Pay の本人確認
    • コロナワクチンの受付時の本人確認

今後はマイナンバーカードがないと本人確認は厳しいかも。 社会も性善説では通用しなくなってきてるし、仕方ないかも。 運転することはないのに、身分証明のために運転免許証を取るといったことはしなくていいのでそこは良い。多分、2割くらいはいそう。

  1. 確定申告

フォームに数値を打ち込んで送信するだけだった。医療費控除の計算もできるし、便利。

  1. 保険証利用

保険証を持ち歩かなくて済むのはいいが、 資格確認システムのバグで利用できなくて困ることが何回かあったので、念のため保険証を持ち歩くのがよさそう。 薬局で処方された医薬品情報がマイナポータルで確認できるのが便利。(薬のアレルギー持ちの人は特に) マイナカードを利用せず、保険証で利用したところは、 医療費の計算をしてくれるのかな?そこはちょっとわからない。

  1. 転出届

3月末の混む時期に市役所 (出張所) に行って、転出届を出すのは気が滅入るが、マイナポータルを利用し転出届がオンラインで出せる。 注意しなければならないことは、転入届を忘れないこと。 (ちなみに、市役所・区役所行くより、出張所のほうが混んでないのでおすすめ。) 転入時にマイナンバーの暗証番号も再設定しなければいけないのが面倒だった。

  1. スマホ電子証明書

スマホにマイナンバーの電子証明書を搭載できる。 マイナポータルにカードレスでログインできるので便利かも。

不満なところ

  1. スマホアプリの NFC スマホに電子証明書を搭載しているのに、毎回 NFC を要求される。NFC を有効にしておかなければアプリが開かないのは不便なので、改善を期待したい。

  2. マイナンバーが記載されている マイナンバーカードにマイナンバーを記載することで、 紛失したときのリスクがある。とはいっても悪用は考えづらいが。クレジットカードのようにナンバーレスにしてほしい。

  3. 写真がモノクロ マイナンバーカードに内蔵されている写真はモノクロ。 なぜカラーにしなかった。

  4. 更新が面倒 電子証明書のセキュリティの関係で更新が 5 年だとか。 しかし、有効期間は 10 年間。 おいおい。 改善されるとかされないとからしいが。

  5. カードが使えない病院 国から補助金がいくらか出ているそうなので、対応してほしい。

  6. 暗証番号の種類が多い 暗証番号の種類が 4 種類もある。1 種類にしてほしいが、 セキュリティ的に難しいのだろうか。わからん。

  7. 券面がダサい 無線従事者の免状を見習ってほしい。

多分、勘違いされていること

マイナカードの的外れな批判が多いのでまとめていく。 批判する前に、仕組みを理解してほしい。

  1. マイナカードから紐づけされた個人情報が抜かれる これは、一部正しい。 マイナカードそのものには住所、氏名、性別、生年月日などの基本的な個人情報しか存在しない。運転免許証よりも情報は少ないだろう。 マイナカードと紐づけされた情報を見るには、その紐づけされたサイトを開き、マイナカードから認証する必要がある。 紐づけされた情報はマイナカードと暗証番号がないとみられないわけだ。もちろん、カードに暗証番号を書いて、そのカードをなくしたりしたら、様々な個人情報が抜かれる可能性はある。この点はキャッシュカードと似てる。

  2. 暗証番号が 4 桁しかなく、セキュリティが甘い セキュリティが甘いのは誤り。 パソコンで SNS へのログインを考えてみると、ID とパスワードでログインできる。 SNS では ID は簡単にわかるので、パスワードがあればログインができる。いくらパスワードが複雑だろうと、一要素認証なわけだ。 一方マイナンバーカードは、カードの所持+暗証番号の知識という二要素認証となっている。 Windows などで、PIN コードでログインできるようになっているのも、複雑なパスワードを用いた一要素認証よりも、所持+記憶の二要素認証のほうがセキュリティが高いと言われているからだ。

  3. 保険証の紐づけの誤り これは、保険組合の紐づけミス、ヒューマンエラーである。 マイナカードはあくまでも個人認証する仕組みしかなく、マイナカードの問題ではない。 しかし、保険組合で紐づけるミスをどうにかしろというのはある。 保険証情報はマイナポータルで確認できるので、一度確認したほうが望ましい。

  4. マイナカードなしで窓口 10 割負担なんてとんでもない 従来と同様、保険組合で手続きすることで返金を受けられる。 とはいっても資格証明書という本末転倒な仕組みを導入するそうだが。