Excelの時刻の12時間表記

Excel の時刻の12時間表記に違和感を感じたという話です。
結論を先に書くと、英語圏の時刻の表現はこうなのだそうです。

Excel の書式設定の仕様

時刻の書式設定 h:mm(24時間表記)とh:mm AM/PM(12時間表記)の表示のされ方を比較してみます。

  • C列とD列の比較です
  • B列に値を入れ、C列とD列はB列を参照しています
Excel time 1

違和感を感じたのは、12:00 AM12:00 PM です。
感覚的に24時間表記の0時と12時のどちらに該当するのか分からないです。その理由は具体的に以下によるものだと思われます。

  • 12:00 AM の1分前は11:59 AM ではなく11:59 PM
  • 12:00 PM の1分前は11:59 PM ではなく11:59 AM

ついでに確認したこと

書式設定のhAM/PM の関係が気になったので、書式設定がhh AM/PM だけのパターンも追加してみました。

  • E列とF列を追加しました(B列を参照しています)
Excel time 2

特に変わったことは起きなかったのですが、これで分かったことは、hAM/PM の有無で表現が変わるということです。
F列のAM とPM が表示されないだけの状態にはならないようです。

Microsoft のサイトにもこの辺のことが仕様として書かれていました。

AM と PM     形式に AM または PM が含まれている場合、時間は 12 時間のクロックに基づいており、”AM” または “A” は午前 0 時から正午までの時刻を示し、”PM” または “P” は正午から午前 0 時までの時刻を示します。 含まれていない場合、24 時間表示に基づきます。

Microsoft サポート

ちなみに、h AM/PM は「このセルに適用されている数値の書式は誤解を招く可能性があります」という警告を表示してくれます。
その通りだと思います。

午前と午後の定義、時刻の表現のされ方

時刻表記には何かしらの規格がありそうだったので、この仕様の根拠となる情報がないか検索して調べてたのですが、結論としては冒頭で述べた英語圏の時刻の表現のようです。規格は見つかりませんでした。

調べる過程で時刻の扱いについて興味深い話がいろいろあったので、記録として記載しておきます。

  • 午前と午後の定義
    • 正午(太陽が地平線より上で子午線を通過する時刻)より前が午前(AM)、後が午後(PM)
    • 0時から12時間後までが午前、12時から12時間後までが午後ではない
  • 23時間表記の0時と12時の表現
    • 0時は「午前0時」、「午後12時」のどちらで表現してもよい
    • 12時は「午後0時」、「午前12時」のどちらで表現してもよい
  • アナログ時計の影響
    • アナログ時計が時刻を1から12の数字で表現されていることから、以下のような表現が慣習的に使われている
      • 0:30 を「午前12時30分」と表現
      • 12:30 を「午後12時30分」と表現
  • 英語圏の時刻の表現
    • 0:00 を「12:00 AM」
    • 12:00 を「12:00 PM」

あとがき

時刻を正確に伝えるのであれば、24時間表記(0時〜23時)で表現すれば間違えなさそうです。

ただ、19:00 であれば「午後7時」と表現した方が、相手に19時-12時=7時(午後)のような計算をさせずに済むので、日常会話では午前/午後を付けた12時間表記で表現した方がよさそうです。
問題の0時台と12時台ですが、これは午前/午後ではなく昼/夜を付けた12時間表記で表現すれば間違えて伝わることを避けることができそうです。

Excel 以外はどうなのだろうと思い、Google スプレッドシートとLibre Ofiice を確認してみるとExcel と同じでした。Excel だけの独自仕様ではないようです。

英語圏では、システムで時刻をAM/PMで表現したデータを正しく時系列順で表示できているのだろうか?ということが気になったので、とある米国企業が提供する運用監視ツールを見てみました。
一覧上の日時を表示する項目がデフォルトで英語圏の時刻の表現になっていましたが、データの並び順は正しい状態になっていました。「2023/9/14 11:59 PM」の1分後が「2023/9/15 12:00 AM」、「2023/9/15 12:59 AM」の1分後が「2023/9/15 1:00 AM」です。違和感ありまくりです。

参考

VMware Fusion(M1 Mac)にKali Linuxをインストール

VMware FusionKali Linux をインストールする手順の解説です。

前回の「M1 MacにVMware Fusionをインストール」の続きです。

環境

  • MacBook Pro / M1 Pro チップ (Apple Silicon)
  • macOS Monterey (12.6.6)
  • VMware Fusion Player (13.0.2)
  • Kali Linux (2023.2) – Apple Silicon (ARM64)

Kali Linux のダウンロード

Kali Linux のサイトのダウンロードページにアクセスします。

Kali Linux > download 1

左の”Installer Images” をクリックします。

  • Installer Images
    • インストーラーのイメージファイル(ISO ファイル
  • Virtual Machines
    • 仮想マシンのパッケージファイル(.vmwarevm ファイル)
    • こちらにはApple Silicon 対応版はありませんでした(2023.6.17時点)
Kali Linux > download 2

“Kali Linux 2023.2 Changelog” の”Apple Silicon (ARM64)” を選択し、Recommended となっている”Installer” をクリックしてISO ファイルをダウンロードします。

2023.6.17の時点ではkali-linux-2023.2a-installer-arm64.iso というファイルがダウンロードされました。

ダウンロードしたファイルに破損などがないか、チェックサムを確認します。

Kali Linux > download 3

“Installer” の枠内の”sum” をクリックするとSHA256 のチェックサムが表示されます。

% shasum -a 256 kali-linux-2023.2a-installer-arm64.iso
94ce3f6b81be33e2f80de157d69222efbfe6c404491b25292a8058a62096c594 kali-linux-2023.2a-installer-arm64.iso

ターミナルで上記コマンドを実行して出力された文字列と、画面に表示されているSHA256sum の文字列が一致しているか確認します。

Kali Linux のインストール

1. VMware Fusion を起動

VMware Fusion アイコン

Launchpad のVMware Fusion アイコンをダブルクリックします。

2. 新しい仮想マシンの作成

VMware Fusion のウィンドウが表示されました。

VMware Fusion 起動

左上の[+] をクリックして表示されるメニューの中から[新規…] をクリックします。

VMware Fusion > インストール方法を選択

ディスクまたはイメージからインストール” の枠内に、ダウンロードしたISO ファイルをドラッグ&ドロップします。

VMware Fusion > 新しい仮想マシンを作成

インストールディスクとしてドラッグ&ドロップしたISO ファイルのファイル名が表示され選択されているので、[続ける] をクリックします。

VMware Fusion > オペレーティングシステムの選択

Linx > Debian 12.x 64ビット ARM を選択し、[続ける] をクリックします。

VMware Fusion > 仮想マシンの構成が完了

仮想マシンの概要が表示されています。
今回は構成の一部を変えるので[設定のカスタマイズ] をクリックします。

ここで、仮想マシンをファイルで保存するため、ファイル名の入力を求められます。

VMware Fusion > 仮想マシンのファイル保存

任意のファイル名を入力して[保存] をクリックします。

今回は、インストールで使ったISO ファイルが後で分かるように、ISO ファイルのファイル名の一部をファイル名に指定しました。

  • ファイルの拡張子は .vmwarevm です
  • 保存先のデフォルトはユーザーの仮想マシン フォルダです

3. 仮想マシンの構成の設定変更

VMware Fusion > 仮想マシンの設定変更

仮想マシンの構成を設定するウィンドウが表示されました。
今回はメモリのサイズを増やすので、”プロセッサとメモリ” をクリックします。

VMware Fusion > 仮想マシンの設定変更(プロセッサとメモリ)

メモリを2048 MB から4096 MB に変更して、上の”すべてを表示” をクリックします。
元のウィンドウに戻るので、他の設定も必要に応じて変更し、すべての変更が終わったらウィンドウを閉じます。

4. 仮想マシンの起動

作成した仮想マシンのウィンドウが既に開いています。

VMware Fusion > 仮想マシンの起動

大きい再生ボタンをクリックすると、Kali LinuxISO ファイルを使ったインストールが開始します。

インストーラのウィザードが表示されました。

Kali Linux > インストール > Graphical install

ここでは、インストールするモードを選択します。

今回は、”Graphical install” を選択してEnter を押下します。

  • Install” を選択すると青黒画面のUI になるので、マウス操作したい場合は”Graphical install” の方がよさそうです
  • Graphical install” では、青黒ではないグラフィカルなUI 上で操作することができ、マウスの操作も可能です
  • この青黒の画面ではキーボードでの操作しかできないので、上下で選択してEnter 押下で確定します
  • キーボードとマウス操作がゲストOS 側(仮想マシン内)にある状態になるので、ホストOS 側(macOS)に戻したい場合は[control]+[command] を押下します

5. 言語を選択 – Select a language

インストール手順で表示される言語を選択します。ここで選択した言語はインストールするOS のデフォルト言語として設定されます。

Kali Linux > インストール > Select a language

今回は”English” を選択して[Continue] をクリックします。

選択肢に”Japanese – 日本語” もありますが、Kali Linuxに関する情報はウェブ上では英語の方が日本語よりも多く存在するので、調査や検索で都合の良い英語を選択しました。

6. 所在地を選択 – Select your location

タイムゾーンとして設定する場所を選択します。

Kali Linux > インストール > Select your location 1

今回は日本を設定するので、”other” を選択して[Continue] をクリックします。

Kali Linux > インストール > Select your location 2

Asia” を選択して[Continue] をクリックします。

Kali Linux > インストール > Select your location 3

Japan” を選択して[Continue] をクリックします。

7. ロケールを選択 – Configure locales

ロケールを選択します。

Kali Linux > インストール > Configure locales

United States – en_US.UTF-8” を選択して[Continue] をクリックします。

8. キーボードの設定 – Configure the keyboard

キーボードレイアウトを選択します。

Kali Linux > インストール > Configure the keyboard

日本語配列キーボードを使っているので”Japanese” を選択して[Continue] をクリックします。

英語配列はたぶん”American English” です。

9. ネットワークの設定 – Configure the network

仮想マシンのホスト名とドメイン名を設定します。

Kali Linux > インストール > Configure the network 1
Hostname:

まずはホスト名を入力します。
ホスト名はネットワーク上で仮想マシンを識別する名前として使われます。
任意の名前(今回は”m1-kali”)を入力し、[Continue] をクリックします。

Kali Linux > インストール > Configure the network 2
Domain name:

次はドメイン名を入力します。
ドメイン名はインターネット上の識別子となるドメイン名を指定します。
公開しないので何も入力せず[Continue] をクリックします。

10. ユーザとパスワードの設定 – Setup users and passwords

rootユーザの代わりに使うroot 権限のないユーザを作成します。
インストールしたKali Linux に初回ログインする際に使うユーザです。

Kali Linux > インストール > Set up users and passwords 1
Full name for the new user:

まずは、ユーザのフルネームを入力します。
フルネームはユーザの名称として画面に表示される際に使われます。
任意の名称(今回は”capybara”)を入力し、[Continue] をクリックします。

Kali Linux > インストール > Set up users and passwords 2
Username for your account:

次に、ユーザのユーザ名を入力します。
ユーザ名はログイン画面でパスワードと組み合わせて入力する際に使うものです。
先頭文字(半角英小文字)+ 2文字目以降(半角英小文字、数字)にする必要があります。
任意の名称(今回は”capybara”)を入力し、[Continue] をクリックします。

Kali Linux > インストール > Set up users and passwords 3

パスワードを2箇所に入力し、[Continue] をクリックします。

11. ディスクのパーティショニング – Partition disks

ディスクのパーティショニングを行います。

Kali Linux > インストール > Partition disks 1
Partitioning method:

パーティショニングは、案内に従って行う方法と、手動で行う方法を選択することができます。

  • Guided – use entire disk
  • Guided – use entire disk and set up LVM
  • Guided – use entire disk and set up encrypted LVM
  • Manual

今回は”Guided – use entire disk” を選択して[Continue] をクリックします。

Kali Linux > インストール > Partition disks 2
Select disk to partition:

パーティショニングするディスクを選択します。
/dev/nvme0n1 – 21.5GB VMware Virtual NVMe Disk” のみ表示され選択されているので、[Continue] をクリックします。

Kali Linux > インストール > Partition disks 3
Partitioning scheme:

パーティショニングのスキームを選択します。

  • All files in one partition
  • Separate /home partition
  • Separate /home, /var, and /tmp partitions

今回は、初心者に推奨となっている”All files in one partition” を選択して[Continue] をクリックします。

Kali Linux > インストール > Partition disks 4

これまで設定してきたパーティションとマウントポイントの概要が表示されます。
このまま進めるので、”Finish partitioning and write changes to disk” を選択して[Continue] をクリックします。

Kali Linux > インストール > Partition disks 5

ディスクに書き込んでよいか確認が求められています。
[Yes] を選択して[Continue] をクリックします。

12. ソフトウェアを選択 – Software selection

Kali Linux にインストールするソフトウェアを選択します。
デフォルトで標準的なデスクトップ環境とツール類が選択された状態になっている、とのことです。

Kali Linux > インストール > Software selection

今回はデフォルトの状態で[Continue] をクリックします。

Kali Linux のインストールが開始されます。
インストールが完了するまで、そのまま待機します。

13. インストール完了 – Finish the installation

Kali Linux > インストール > Finish the Installation

Kali Linux のインストールが完了しました。

続けて、Kali Linux をインストールした仮想マシンを起動します。
インストールメディアを外すように求められていますが、VMware が自動でやってくれるようなので、このまま[Continue] をクリックします。

14. Kali Linux 起動・ログイン

Kali Linux の仮想マシンが起動します。

Kali Linux > 起動

Kali Linux の起動画面が表示され、”Kali GNU/Linux” が選択されています。
そのままで数秒後に自動で進みますが、Enter を押下して進めることもできます。

Kali Linux > ログイン

ログイン画面が表示されるので、登録したユーザ名パスワードを入力して[Log in] をクリックします。

Kali Linux > デスクトップ

Kali Linux のデスクトップが表示されました。

とりあえず正常にインストールできているようです。

インストール直後の状態の確認

ターミナルで確認します。

$ cat /etc/default/locale
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"

$ cat /etc/timezone
Asia/Tokyo

$ cat /etc/default/keyboard
XKBMODEL="pc105"
XKBLAYOUT="jp"

$ cat /etc/hosts           
127.0.1.1       m1-kali

$ hostname
m1-kali

$ domainname -d


$ cat /etc/passwd | grep capybara
capybara:x:1000:1000:capybara,,,:/home/capybara:/usr/bin/zsh

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=13.7 ms

あとがき

OS の初期設定

インストールが完了したので、このあと以下のような作業をする予定です。(解説する予定なし)

  • パッケージの更新
    • sudo apt update
    • sudo apt upgrade
  • SSH Server の自動起動設定
  • 日本語のローマ字入力の設定

失敗談

最初、間違えて”Apple Silicon (ARM64)” のイメージファイルではなく、”Pre-built Virtual Machines” の方にあるVMware 向けの仮想マシンのパッケージファイルをダウンロードして、仮想マシンを作り起動するとStart PXE over IPv4 というエラーになり原因を調べても分からず時間を浪費するという状況に陥ってしまいました。

同じ状況に陥った人がStart PXE over IPv4 をキーワードで検索し、このページに辿り着いて早期解決ができたら幸いです。

VirtualBox(M1 Mac)にKali Linuxのインストールを試みた結果

VirtualBox のApple Silicon 対応は、VirtualBox 7.0.8 BETA (Developer preview for macOS / Arm64 (M1/M2) hosts) が2023.6.18時点で提供されていますが、”Apple Silicon (ARM64)” のイメージファイルを使ったインストールを試したところ失敗しました。(”Linux 2.6/3.x/4.x/5.x/(64-bit)”、”Debian 11 Bullseye(64-bit)”)

VirtualBox > Kali Linux > Installation failed
VirtualBox でKali Linux のISOファイルを起動するとすぐ表示されるメッセージ

参照

M1 MacにVMware Fusionをインストール

M1 Mac にVMware 社が提供するMac 用デスクトップ ハイパーバイザーのVMware Fusion をインストールする手順の解説です。

VMware Fusion について

VMware Fusion はVMware 社が提供するソフトウェアで、macOS にインストールすることで、macOS 上でWindows やLinux などのOS を仮想マシンとして起動させることができるようになります。

仮想化ソフトウェアは、ホスト型、ハイパーバイザ型、コンテナ型の3つに分類分けされますが、VMware Fusion はホストOS(macOS)上で動作し、その上で仮想マシンを作成・実行するのでホスト型に分類されます。

現在の最新のバージョンであるFusion 13 のシステム要件は以下のようになっています。

  • プロセッサ(Intel プロセッサー、Apple Silicon
  • OS(macOS 12 Monterey、13 Ventura)

VMware Fusion は、Fusion Pro とFusion Player の2種類があります。
Pro はビジネル利用、Player はゲームや学習目的での利用を想定していて、備えている機能が異なっています。

Pro とPlayer はともに有償の商用利用ライセンスとして提供されていますが、Player は非商用目的の個人利用ライセンスに登録することで無償で使用することが可能となっています。

手順

今回解説する手順は、VMware Fusion Player の個人利用ライセンスの登録からインストール、初回起動までの手順になります。

なお、使ったMac はM1 Pro チップMacBook Pro 、OSはmacOS Monterey です。

1. アカウント登録

VMware のサイトにアクセスします。

VMware ダウンロード 1

上のメニューの[製品] をクリックし、”デスクトップハイパーバイザー” の[Mac 用のFusion] をクリックします。

VMware ダウンロード 2

[無償評価] をクリックします。

VMware ダウンロード 3

“Fusion 13 Player (macOS 12 以降)” の[個人利用ライセンスの登録 >] をクリックします。

VMware ダウンロード 4

Customer Connect のページが表示されます。
“Installation & Configuration” というタブが選択された状態になっています。

右上の[Create an Account] をクリックします。

VMware ダウンロード 5

アカウントの情報を登録するRegister のページが表示されます。
以下の情報を入力し、利用規約のチェックをON 、商品・サービスの案内を受け取るかどうかのチェックを希望する場合はON にして、[Register] をクリックします。

  • 登録するアカウントのログイン情報(Email address, Password)
  • ユーザー情報(First name, Last name)
  • 所属企業の情報(社名、役職、住所、郵便番号、国、電話番号)
VMware ダウンロード 6

登録したメールアドレスに6桁のワンタイムパスワードが届くので、画面に入力して[Verify Code] をクリックします。

VMware ダウンロード 4

アクティベートされたと表示された後、自動で元のページ(Customer Connect の最初のページ)に戻るので、右上の[I Have an Account] をクリックします。

VMware ダウンロード 7

ログイン画面が表示されるので、メールアドレスとパスワードを入力し、[Sign In] をクリックします。

2. ダウンロード

ログインが成功すると、Customer Connect のページが表示されます。
“License & Download” タブが選択された状態になっています。

VMware ダウンロード 8

“License Information” に、VMware Fusion Player 13 – Personal Useライセンスキーが表示されています。後でVMware Fusion の初回起動時に入力するので控えておきます。

“Download Packages” に、VMware Fusion Player – Personal Use License – Binaries の[Manually Download] ボタンがあるのでクリックしてdmg ファイルをダウンロードします。

5月15日の時点では「VMware-Fusion-13.0.2-21581413_universal.dmg」というファイルがダウンロードされました。

ダウンロードしたファイルに破損などがないか、チェックサムを確認します。

% shasum -a 256 VMware-Fusion-13.0.2-21581413_universal.dmg
c86b40823b97334f20b4e6b475b488ec23faf06c986e291965b9e56f7b44c042 VMware-Fusion-13.0.2-21581413_universal.dmg

ターミナルで上記コマンドを実行して出力された文字列と、画面に表示されているSHA256SUM の文字列が一致しているか確認します。

3. VMware Fusion のインストール

ダウンロードしたdmg ファイルをダブルクリックします。
以下のウィンドウが表示されます。

VMware Fusion インストール 1

“VMware Fusion.app” のアイコンをダブルクリックします。

VMware Fusion インストール 2

エンドユーザー使用許諾書を確認し、[同意する] をクリックします。

VMware Fusion インストール 3

VMware Fusion 13 のライセンスキーを持っています” が選択された状態で、前述の手順で控えておいたライセンスキーを入力して[続ける] をクリックします。

VMware Fusion インストール 4

ご利用ありがとうございます” の画面が表示されたら[完了] をクリックします。

VMware Fusion のインストールはこれで完了です。

4. VMware Fusion の初回起動

続けて、インストールしたVMware Fusion を起動します。

VMware Fusion アイコン

Launchpad のVMware Fusion アイコンをダブルクリックします。

VMware Fusion 初回起動 5

アクセシビリティにアクセスできません” というメッセージが表示されるので[OK] をクリックします。

システム環境設定を開き、プライバシーのアクセシビリティを開きます。

VMware Fusion 初回起動 2
VMware Fusion 初回起動 3

VMware Fusion.app” のチェックがOFF になっているのでON にします。

VMware Fusion 初回起動 4

VMware Fusion.app が SystemEvents.app を制御するアクセスを要求しています” というメッセージが表示されていたら、[OK] をクリックします。

VMware Fusion 初回起動 5

“インストール方法を選択” という画面が表示されました。
VMware Fusion の初回起動はこれで完了です。

この画面から、ISO ファイルを使ったOS のインストールや、仮想ディスクのファイル(.vmdk)を使った仮想マシンの作成をすることができます。

あとがき

あとでライセンスキーを確認したくなった時に、VMware Customer Connect のライセンスキーが表示されているページを見つけづらそうだったので記載しておきます。

  1. VMware Customer Connect にログインする
    • https://customerconnect.vmware.com/home
  2. 右上の9点リーダーから”Trial and Free Products” をクリック
  3. “VMWare Fusion” の”Get Fusion Player for Free” をクリック
  4. “VMware Fusion Player – Personal Use License” のページが表示される

次回、VMware FusionKali Linux の仮想マシンをインストールする手順を解説する予定です。
2023.6.18 に投稿しました(↓)

参照

Excelで10進数→16進数の変換

はじめに

Excelで10進数を16進数に変換する方法を整理してみました。

3つの方法がありましたが、使い方や変換できる10進数の範囲が異なっていたので、意識して使い分けするとよさそうです。

関数名10進数(最小)10進数(最大)
ExcelDec2Hex-549,755,813,888549,755,813,887
VBAhex-2,147,483,6482,147,483,647
PowerShell[convert]::ToString-9,223,372,036,854,775,8089,223,372,036,854,775,807

3つ目のConvert クラスのToString メソッドは、Excel VBA のPowerShell コマンドを使って呼び出して使います。
指定する10進数はInt64(64ビット符号付き整数)で、3つの中で一番大きい数値を変換することができます。

使い方

Excel のDec2Hex 関数

Dec2Hex 関数に10進数の値を指定します。例えば、10進数の値が1234567890 の場合、セルに以下のように入力します。

=Dec2Hex(1234567890)

Excel VBA のhex 関数

Excel VBA のエディタ上で以下のようにコードを記述して使います。

Dim lngDec As Long
Dim strHex As String
lngDec = 1234567890
strHex = hex(lngDec)

PowerShell のConvert クラスのToString メソッド

Excel VBA のエディタ上で以下の関数を作り、呼び出して使います。

Function Dec2HexCustom(pDec As Currency) As String
  Dim objShell As Object
  Dim strCmd As String
  Dim strHex As String

  strCmd = "[convert]::ToString(" & pDec & ",16)"
  Set objShell = CreateObject("WScript.Shell").Exec("powershell -Command " & strCmd)
  strHex = objShell.StdOut.ReadAll
  Dec2HexCustom = Left(strHex, Len(strHex) - 2)
End Function
  • (6行目) PowerShell のコマンドは [convert]::ToString(1234567890, 16)
  • (7行目) PowerShell のコマンドを呼び出して変換している
  • (9行目) PowerShell のコマンドの実行結果を標準出力で受け取ると末尾に改行(CRLF)が付加されるので、改行(CRLF)に該当する右2文字を除去している

あとがき

Excel VBA でPowerShell のコマンドを実行すると、処理がもたついてあまりパフォーマンスがよくなかったです。
Excel の表から複数行を読み込んで繰り返し実行する場合は、小さい数値はhex 関数にやらせて、大きい数値のみPowerShell のConvert クラスのToString メソッドを使うように実装した方がよさそうです。

その他、注意事項として、変換後の16進数の値をセルに貼り付ける場合、変換後の16進数の値が「数字 + “E” + 数字」だと、値が指数表記と誤認されて正しくセットされなかったりします。
例えば、「12345678E90」の場合は「1.2345678E+97」に変換され、「1234567E890」の場合は変換されずそのままセットされるなど、何かと厄介です。
貼り付け先のセルの書式を文字列にすれば解消できるので、元から文字列にしておくか、値を貼り付ける直前に文字列にする処理「.Cells(x, y).NumberFormatLocal = “@”」を入れてから貼り付けるようにすればよさそうです。

参考

M1のmacOSにJDKをインストール

はじめに

久しぶりにJava を触ることになり、M1macOSJDK をインストールしたのでその記録です。

JDK は種類が色々あり、どれを入れようか悩んだ結果、AzulOpenJDK をインストールすることにしました。

選定理由は、M1 のmacOS で動作すればよく、あまりガッツリ調べずに決めたので書かないでおきます。
とはいえ、振り返りができるように参考になったサイトのリンクを貼っておきます。

Azul のOpenJDK は、Homebrew にパッケージがありましたが、最新のJava 20 しかなかったので、Azul の公式サイトから最新のLTS であるJava 17 をダウンロードしてインストールすることにしました。

  • zulu – Homebrew Formulae

ダウンロード

Azul の公式サイトのダウンロードページにアクセスします。

Azul Zulu OpenJDK > ダウンロード 1

左のAzul Zulu Builds of OpenJDK のDownload ボタンをクリックして、希望のJava 17 (最新のLTS)、macOS M1/M2 のdmg ファイルをダウンロードできます。

また、下にスクロールすると、各バージョン、OS環境、CPUアーキテクチャを選ぶことができるようになっています。

Azul Zulu OpenJDK > ダウンロード 2

ここでは、Download ボタンをクリックすると、macOS 向けでは.dmg / .tar.gz / .zip のいずれかを選んでダウンロードできるようになっています。

Azul Zulu OpenJDK > ダウンロード 3

今回はmacOS、ARM 64-bit v8.dmg を選択して、下記のファイルをダウンロードしました。

  • zulu17.42.19-ca-jdk17.0.7-macosx_aarch64.dmg
Azul Zulu OpenJDK > ダウンロード 4

ダウンロードが完了すると表示される画面にSha-256 checksum のリンクがあるのでクリックして、SHA256 のチェックサムを表示します。

Azul Zulu OpenJDK > ダウンロード 5

ダウンロードしたdmg ファイルに対して下記のコマンドでSHA256 チェックサムを算出し、表示されていたチェックサムと一致していることを確認します。

% openssl sha256 zulu17.42.19-ca-jdk17.0.7-macosx_aarch64.dmg
SHA256(zulu17.42.19-ca-jdk17.0.7-macosx_aarch64.dmg)= 984face81db25020ace7f68fbf4d2c1ec950b46f34c1d40adc36983e545205c5

インストール

dmg ファイルをダブルクリックしてインストールします。

Azul Zulu OpenJDK > インストール 1

右のダンボールをダブルクリックします。

Azul Zulu OpenJDK > インストール 2

指示に従えばインストールは完了します。(特筆することがないので省略)

簡単な動作確認だけしておきます。
バージョンを確認します。

% java -version
openjdk version "17.0.7" 2023-04-18 LTS
OpenJDK Runtime Environment Zulu17.42+19-CA (build 17.0.7+7-LTS)
OpenJDK 64-Bit Server VM Zulu17.42+19-CA (build 17.0.7+7-LTS, mixed mode, sharing)

Azul OpenJDK のインストール先を確認します。

% ls -l /Library/Java/JavaVirtualMachines/
total 0
drwxr-xr-x  3 root  wheel  96  5 26 21:54 zulu-17.jdk

あとがき

IDE は最近使っているVisual Studio Code のExtension Pack for Java がよさそうなのでチャレンジしてみようと思います。
Eclipse が一番よく使っていましたが、あまりにも長く使っていないので、思い出すのに苦労するくらいなら新しいものを使ってみようという感じです。

久しぶりの投稿でしたので、とてもシンプルなものになりました。
リハビリとして単なる作業記録を書いた感じです。

参照

nostr.directoryのTwitter認証バッジ

はじめに

前回の投稿「Nostrアカウントの認証(NIP-05)」の続きです。
今回はnostr.directoryTwitter 認証バッチを有効にした際の作業記録です。

最初に感想を述べると、なんかよく分からないけれどできたという感じです。

なので、ここで書かれている通りにやっても上手くいかない可能性があります
同じように困っている方がここで書かれていることを参考にして解決できるかもしれない、という程度の内容なので軽い気持ちでご覧いただければと思います。

とはいえ、もし間違えや誤解を招く記載があれば後で訂正しようと思っています。

作業記録

1. Twitter 上で指定された文言をツイート

nostr.directory のサイトを開くと[Tweet your nostr pubkey] と[Verify your pubkey on nostr] という2つのボタンがあります。

nostr.directory

[Tweet your nostr pubkey] ボタンをクリックしてTwitter 上で指定された内容のツイートをします。

詳しい手順は、前々回の投稿「Nostrアカウントの作成(Damus, Amethyst, snort.social)」のあとがき「nostr.directory」に記載してあります。

このツイートをした後にnostr.directory で自身のアカウントを検索してみると、検索結果にアカウントの情報が表示されるようになりました。(検索条件はTwitter のユーザー名かNostr アカウントの公開鍵を指定します)

nostr.directory > Account

この時はまだ、Twitter の認証バッジは灰色です。
このツイートは、この検索でアカウントを表示できるようにするためだけのもののようです。

Twitter アイコンの右上の(?)をクリックすると、認証バッジを有効する方法と思われる内容が表示されます。

nostr.directory > Twitter Verification ヘルプ

Twitter の検証

ユーザーは下記をする必要がある:

1. nostr.directoryのHPで示されたフォーマットに従って、自身のnostr公開鍵をツイートする

2. nostr.directoryのHPで示されたフォーマットに従って、nostrの公開鍵(1のような)を送信する

上記1. は当項目で実施したこと。2. は後述「3. Nostrアカウントで指定された文言をPost」でやることの認識です。

2. Nostrアカウントにリレーサーバを追加

Nostr のnostr.directory のアカウントが登録しているリレーサーバと自分のアカウントが登録しているリレーサーバを比較して、nostr.directory のアカウントの方にしか登録されていなかったwss://nostr-pub.wellorder.net を追加します。

これが本当に必要かは公式サイトに掲載されている訳ではないので実は必要ないかもしれませんが、何度か試しても上手くいかず、成功した時にこれを追加していたので書いておきます。

Damus > Relays (Before)
追加する前
Damus > Relays (Add)
追加
Damus > Relays (Added)
追加した後

Damus を使ってリレーサーバを追加しました。
画面はDamus の画面です。

3. Nostrアカウントで指定された文言をPost

Damus でPost

iPhone のDamus アプリを使ってPost します。

まず、ブラウザでnostr.directory のサイトを開きます。

nostr.directory > Verify

[Verify your pubkey on nostr] ボタンをクリックします。

nostr.directory > Verify (1)
nostr.directory > Verify (2)

iPhone が初代SE なので画面のレイアウトが窮屈で見づらいですが、”Twitter screen name” という入力欄にTwitter アカウントのユーザー名(先頭の@ を除く)を入力する(左の画像)と、右の画像のようにPublic Key の箇所が入力した内容に自動で置き換わるので、[Copy Verifrication Text] をタップしてクリップボードにコピーします。

Damus アプリを開いて、コピーを貼り付けてPost します。

Damus > Post
Damus > Posted

これで認証バッジにチェックが付くはずが暫く待っても灰色のまま。
どうしてよいか分からぬまま続けてブラウザ向けのNostr クライアントIris を使ってPost してみることにしました。

Iris でPost

ブラムザ向けのNostr クライアント Iris を使ってPost します。

ブラウザを使ってPost する文言を作る手順は同じなので省略します。
Iris でPost しました。

Iris > Posted
iris

上がIris のPost、下がDamus のPost。約1時間後にPost していました。

nostr.directory > Twitter (verified)
nostr.directory

Iris でPost してすぐにnostr.directory を見ると、緑色のチェックが付いていました。
DamusIris のPost のどちらが反映されたのか、Nostr クライアントの違いが影響しているのかなどよく分からないですが、とにかくTwitter 認証バッジが有効になりました。

あとがき

Nostr 関連の最初の投稿「Nostrアカウントの作成(Damus, Amethyst, snort.social)」の際に同じVerify のPost をしていたのですが反映されず、その時は諦めたのですが気になって再度チャレンジして何とかなりました。

これが有効になると、nostr.directory でTwitter のアカウントとnostr アカウントが紐づいていることを確認できることになるので、Twitter でつながっている知人のnostr アカウントを安心して特定できるようになる、という感じでしょうか。

とりあえず、認証バッジが全部灰色よりは見た目がいい感じになれてよかったです。

参照

Nostrアカウントの認証(NIP-05)

はじめに

前回の投稿「Nostrアカウントの作成(Damus, Amethyst, snort.social)」の続きです。
今回はNIP-05 の認証をします。

自身で管理するWeb サーバのドメイン名とNostr アカウントを紐づけることで、Nostr アカウントのプロフィール欄にドメイン名を認証バッジ付きで表示させることができます。
Nostr アカウントがそのドメインの所有者であることを証明することになるので、第三者がそのNostr アカウントがなりすましでないことを確認できるようになります。

1. Web サーバに認証用のファイルを配置

自身で管理するWeb サーバの<domain>/.well-known/nostr.json で参照できる場所に下記のファイルを配置します。

{
  "names": {
    "<name>": "<pubkey>"
  }
}

3行目は自身のNostr アカウントの情報に書き換えます。

  • name
    • Nostr アカウントのUsername(先頭の@ を除く)
  • pubkey
    • Nostr アカウントの公開鍵(HEX 形式

今回、下記のように書き換えました。

{
  "names": {
    "GiantRodent": "94e3a1c166f4fea85b94870219e6461de923296f3fe4736b24c3e23b4c0c43e4"
  }
}

公開鍵(HEX形式)

nostr.directory にアカウントを登録している場合は、NIP-09 のhexPubKey にHEX 形式の公開鍵が表示されているので、ここからコピーして使えます。

nostr.directory > NIP19
nostr.directory > @RodentGiant

Damus のKey Converter というページで、npub で始まる公開鍵を入力してHEX 形式に変換することもできます。

Damus > Key Converter

ファイルを配置(CLI)

Web サーバの公開ディレクトリに認証用のファイルを配置します。
サーバにSSH 接続して下記のコマンドでファイルを配置しました。

mkdir .well-known
cd .well-known
touch nostr.json
chmod 644 nostr.json
vi nostr.json
→ 前述のJSON を貼り付け

2. Web サーバの設定でCORS を許可する

Web サーバの設定ファイルに、CORS を許可する設定を追記します。

Apache

Header set Access-Control-Allow-Origin "*"

nginx

add_header 'Access-Control-Allow-Origin' '*';

3. Nostr アカウントにNIP-05 の識別子を登録

Nostr アカウントにNIP-05 の識別子を登録します。

今回はDamus を使って登録します。
アカウントのプロフィールを編集するページで、<name>@<domain> という形式でNIP-05 の識別子を登録します。

  • name
    • Nostr アカウントのUsername(先頭の@ を除く)
  • domain
    • Webサーバのドメイン名
Damus > Account > Profile > Edit (NIP-05)
Damus > Profile > NIP-05 Verification

今回は [email protected] を登録しました。

登録してプロフィール画面に戻ると、認証バッジ付きのドメイン名が表示されるようになっていました。
細かいですが、実際には画面が表示されてから2〜3秒後に表示されました。

Damus > Account > Profile
NIP-05 認証前
Damus > Account > Profile (NIP-05認証済)
NIP-05 認証後

nost.directory のページを見ると、NIP-05 の認証バッジにチェックが入っていました。

nostr.directory > NIP-05 (認証済)
nostr.directory > @RodentGiant (NIP-05認証済)

あとがき

NIP-05 の認証はスムーズにできました。

nostr.directory にTwitter の認証バッジがあるので、これにもチェックを入れたいのですが上手くできず。
また時間がある時に試してみようと思います。

参照

Nostrアカウントの作成(Damus, Amethyst, snort.social)

はじめに

Twitter の共同創業者の一人、Jack Dorsey 氏がTwiiter でこのようなツイートをしました。

「オープンプロトコルに向けた1つのマイルストーン。Nostr がApple App Store にDamus を公開しました。Google Play Store はAmethyst 、Web 向けにはsnort.social (代表で1つ挙げると)があります」

知らないキーワードばかりだったので気になって調べてみました。

Nostr

Nostr の公式サイトにあった自己紹介文です。

A decentralized network based on cryptographic keypairs and that is not peer-to-peer, it is super simple and scalable and therefore has a chance of working.

“What is Nostr?” nostr.com

「Nostr は公開鍵暗号技術をベースにしたピアツーピアではない非中央集権的なネットワークで、非常にシンプルで拡張性があるのでうまく機能することが期待できます」

詳しいことはリンク先の下記ページに記載されていました。

書かれていることをざっくりと箇条書きしてみました。(かなり省略してます)

  • Nostr とは
    • 「Notes and Other Stuff Transmitted by Relays」の略
    • 検閲に強いグローバルな”ソーシャル”ネットワークを提供するプロトコル
    • 信頼できる中央のサーバに依存せず、P2P 技術にも依存していない
    • 暗号鍵と署名により改ざんに対する耐性がある
  • Nostr の構成
    • クライアントとリレーサーバで構成されている
    • クライアントはユーザが使う(ネイティブクライアントやWebクライアントなど様々な方法で使える)
    • リレーサーバは誰かが稼働させる
  • Nostr の仕組み(投稿はどのように処理されるかなど)
    • 書いた投稿は自分の鍵で署名して、誰かがホストしたリレーサーバを経由して送信される
    • 他の人の更新情報を得るためには複数のリレーサーバに問い合わせをして、投稿を受け入れているリレーサーバは転送のみを行う。クライアント側で署名を検証するのでリレーサーバの信頼性は問わない。
  • Twitter とMastodon の課題について
    • Twitter の課題を解決する代替手段のニーズがある:広告、ユーザを中毒にするために色々やってる、フォロワーの実際のフィードが表示されない、ban やシャドーban がある、スパムが多い
    • Mastodon の課題:第三者が管理するドメイン名にユーザID が付与されている、サーバの管理者はTwitter のようにユーザをban できる、etc.

更に詳しく知りたい場合は、Nostr のプロジェクトやリソースを集めたキュレーションリストのサイトを漁ってみるとよさそうです。

Damus, Amethyst, snort.social

この3つはいずれもNostr クライアントで、3つとも動作する環境が異なります。
ユーザは環境によって使うものを選ぶことになります。

いずれもNostr のクライアントという位置付けのものなので、作成した自身のNostr アカウントは異なる環境のクライアントでもログインして使うことができます。

デザインやUI はそれぞれ個性を出していますが、できることはTwitter やMastodon と同じような感じで、投稿やフォローをすることができ、タイムラインにフォローした人の投稿が流れます。
なので「ツイッターに代わる可能性があると発言する人もいる」のだそうです。

手順(作業の流れ)

実際にNostr クライアントを使ったNostr アカウントを作成から、他のNostr クライアントでログインできるかを確認した手順です。

今回はDamus でNostr アカウントを作成しましたが、他のNostr クライアントでもNostr アカウントを作成することはできるので、iOS 端末を持っていない方はAmethystsnort.social でNostr アカウントを作成して始めることができます。

(iPhone) DamusでNostrアカウント作成

iPhone を使って、App Store アプリでDamus を検索します。
使ったiPhone が初代SE のせいか、一部レイアウトが崩れている箇所がありますが無視してください。

  • Damus – App Store (Apple)
Damus > App Store

Damus アプリをインストールしたら開きます。

Damus > Create Account 1

Damus アプリが起動したら[Create Account] をタップします。

既にNostr アカウントを持っている場合は、[Login] からログインすることができます。今回はDamus アプリを使ってNostr アカウントを作成する手順なので、ログインについての解説は省略します。

Damus > Create Account 2
Damus > Create Account 3

EULA(使用許諾契約書)の内容を確認して[Accept] をタップします。

Damus > Create Account 4
Damus > Create Account 5

作成するアカウントのユーザ情報を入力して[Create] をタップします。

  • Username (必須)
    • 頭に@ がついて表示されるユーザ名
  • Display Name (任意)
    • ユーザの表示名。間にスペースを入れることができる。
  • About (任意)
    • 自己紹介文
  • Account ID
    • 自動で作番された公開鍵の文字列が表示されています(表示が途中で切れています)
Damus > Create Account 6
Damus > Create Account 7
Damus > Create Account 8

Welcome, Giant Rodent!” と表示されているので、このタイミングでアカウントは作成されているようです。

Public Key に表示されているnpub で始まる文字列が公開鍵です。
直前の画面では途切れていましたが、ここでは全体が表示されています。
この公開鍵は公開して使用する情報でユーザの識別に使われます。Twitter の自身のアカウントのプロフィール欄にこの公開鍵の文字列を掲載して、友人や知人がDamus で公開鍵を使ってアカウントを検索してフォローするというような使い方がされています。

公開鍵の左のアイコンをタップすると真ん中の画面の状態になります。
公開鍵はクリップボードにコピーされるので、必要に応じてパスワードマネージャーなどに保存します。

Private Key が表示されました。nsec で始まる秘密鍵の文字列が表示されています。(秘密鍵は非公開にする必要があるものなのでマスキングしています)
この秘密鍵はログイン時に使用する情報で、他人に知られないように秘密に管理する必要があります
実際にログインを試してみると、入力するのは秘密鍵のみでパスワードなど別の情報の入力は求められませんでした。誤ってTwitter のプロフィール欄に掲載すると第三者が自身のアカウントにログインしてなりすましの投稿などができてしまうので扱いには注意が必要です。別のデバイスでログインできたのでリスクベース認証はしていなそうです。

秘密鍵の左のアイコンをタップすると右の画面の状態になります。
秘密鍵はクリップボードにコピーされるので、パスワードマネージャーなどに保存しておきます。失念するとログインできなくなるので保存する必要があります

[Let’s go!] をタップします。

Damus > Posts & Replies
Damus > Posts

作成したアカウントのホーム画面が表示されました。
Posts & Replies にDamus アカウントの投稿と返信が表示されています。
Posts をタップすると、Damus アカウントの投稿が表示されています。
デフォルトでDamus アカウントをフォローしているのでDamus アカウントの投稿が表示されているようです。

これでNostr アカウントの作成が完了しました。

投稿してみる

右下にある[+] をタップして投稿してみます。

Damus > Post 1
Damus > Post 2
Damus > Post 3

投稿するメッセージを入力して[Post] をタップします。
投稿した後に左上のアイコンからプロフィール画面を見ると、投稿したメッセージが表示されていました。

ちなみに、Twitter では投稿をTweetと呼んでいましたが、Nostr ではPost と呼ぶみたいです。

フォローしてみる

Jack Dorsey のNostr アカウントをフォローしてみます。

Jack Dorsey がTwitter でNostr アカウントの公開鍵をツイートしていたのでこれをコピーして使います。

Damus > Account Follow 1
Damus > Account Follow 2
Damus > Account Follow 3

下の虫眼鏡アイコンをタップして表示された画面のSearch 欄にコピーした公開鍵を入力すると”Goto profile <公開鍵>” と表示されたのでタップします。
Jack Dorsey のアカウントの画面が表示されたので[Follow] をタップするとフォローできました。

(Android) Amethyst でログイン

Android スマホを使って、Play ストアでAmethyst を検索します。

  • Amethyst – Play ストア(Google)
Amethyst > Playストア

Amethyst アプリをインストールしたら開きます。

Amethyst > Login 1
Amethyst > Login 2

Amethst アプリが起動したら”nsec / npub / hex private key” にNostr アカウントの秘開鍵を入力し、”I accept the terms of use” をONにして[Login] をタップします。

Nostr アカウントを持っていない場合は、[Generate a new key] からNostr アカウントを作成することができます。(解説は省略)

Amethyst > Home > New Threads
Amethyst > Account

アカウントのホーム画面が表示されました。
New Threads にDamus アカウントの投稿と、先ほどDamus アプリで投稿した自分のアカウントの投稿が表示されています。
左上のアイコンをタップすると、Damus で作成したアカウントのUsername とDisplay Name が表示されています。

Damus で作成したNostr アカウントでAmethyst アプリにログインできました。

投稿してみる

右下にある[+] をタップして投稿をしてみます。

Amethyst > Post 1
Amethyst > Post 2
Amethyst > Post 3

投稿するメッセージを入力して[Post] をタップします。
New Threads に投稿したメッセージが表示されました。

(WebApp) snort.social でログイン

Web ブラウザを使ってsnort.social のページを開きます。
今回はMac のChrome を使いました。

snort.social > Login 1

右上の[Login] をクリックします。

snort.social > Login 2

Login ページが表示されたら”nsec / npub / nip-05 / hex private key…” にNostr アカウントの秘開鍵を入力し、[Login] をクリックします。

Nostr アカウントを持っていない場合は、[Generate Key] からNostr アカウントを作成することができます。(解説は省略)

snort.social > Posts

アカウントのホーム画面が表示されました。
Posts にDamus アカウントの投稿と、先ほどDamus とAmethyst アプリで投稿した自分のアカウントの投稿が表示されています。

続けて、右上のアイコンをクリックしてアカウントのページを表示します。

snort.social > Account

Damus で作成したアカウントのDisplay Name と公開鍵が表示されています。Display Name の右に”follows you” という文言があったので気になって調べてみると、デフォルトで自分自身をフォローしていました。違和感がありますが、とりあえず気にしないでおきます。

Damus で作成したNostr アカウントでsnort.social にログインできました。

ちなみに、このアカウントのページのURL は以下のようになっていました。

snort.social > Account (URL)

ドメイン名の右側にある長い文字列はアカウントの公開鍵の文字列になっていました。このように公開鍵は公開されたアカウントの識別子として使われています。

アカウントのプロフィール情報の登録

Damus アプリを使って、アカウントのプロフィール情報を登録します。

Damus > Posts
Damus > Account
Damus > Account > Profile

ホーム画面の左上にあるアイコンをタップして表示されたメニューのProfile をタップし、表示されたプロフィール画面の右上の[Edit] をタップします。

Damus > Account > Profile > Edit 1
Damus > Account > Profile > Edit 2
Damus > Account > Profile > Edit 3

YOUR NAMEUSERNAMEは登録済みなので、追加で下記の情報を入力して[Save] をタップします。

  • PROFILE PICTURE
    • アイコン画像のURL を指定します
    • Gravatar に登録しているアイコンのURL を指定しました
  • BANNER IMAGE
    • バナーの画像のURL を指定します
    • 自身のブログにアップロードしている画像のURL を指定しました
  • WEBSITE
    • ウェブサイトのURL を指定します
    • 自身のブログのURL を指定しました
  • ABOUT ME
    • 気の利いた自己紹介文が思いつかなかったのでとりあえず”カピバラ”
Damus > Account > Profile (Edited)
Damus

登録した内容が反映されました。

Amethyst アプリでも確認してみます。

Amethyst > Account > Profile (Edited)
Amethyst

snort.social も確認します。

snort.social > Account (Edited)
snort.social

Damus アプリで登録したプロフィール情報が他のクライアントでも反映されていました。
とりあえず、普通に使えそうな状態にはなりました。

あとがき

作成したNostr アカウント

わたし(GiantRodent)のNostr アカウントの公開鍵はこちらです。
フォローしてもらえたら嬉しいです。

npub1jn36rstx7nl2sku5suppnejxrh5jx2t08lj8x6eyc03rknqvg0jqgycpxe

GiantRodent の公開鍵
Nostr > QR code (GiantRodent)

鍵ペア(公開鍵/秘密鍵)について

鍵ペアの取得方法

Nostr の公式サイトでもアカウントを作成できました。ここではアカウントを作成するというより、生成された鍵ペアを取得するというUI になっていました。

この鍵ペアの方式が何か気になって調べてみると、vanity pubkeyvanity address と呼ばれているもので、好みのprefix やsuffix が付いた公開鍵の鍵ペアを自身で生成することができるようでした。
Edward Snowden の公開鍵のprefix “sn0wden” を見て真似したくなりましたが、生成する仕組みがBitcoin のマイニングのようにprefix やsuffix の桁数が多いほど計算コストがかかるのだそうで止めておきました。
下記のサイトの情報が参考になりました。ありがとうございました。

Nostr クライアントに公開鍵を使ってログインする

実は、公開鍵を使ってログインすることもできます。ただし閲覧専用で。
他人の公開されている公開鍵を使ってログインすると、あたかも他人のアカウントにログインしたかのような状態になります。何とも言えない仕様。

秘密鍵を安全に管理する

秘密鍵はNostr クライアントにログインする際にしか使わないので、秘密鍵は単体でユーザID とパスワードを兼ねたものと考えて扱えばよいかもしれません。

間違えて秘密鍵を第三者に提供したり公開することがないように、パスワードマネージャーには秘密鍵のみを保存して、公開鍵は保存しない方が安全に運用できる気がします。

公開鍵はユーザID として第三者に公開・提供する使い方をするので、ログイン以外の場所で公開鍵を入力するシーンがあったらDamus のProfile 画面からコピーするというルールを決めて運用すれば、間違えて秘密鍵を公開するというミスは防げそうです。

パスワードマネージャーに保存する際の名前

Damus, Amethyst はあくまでもNostr クライアントなので名前は「Nostr」にしました。
Damus でログインするのに”Nostr” を探すのは正直不便なので、複数のクライアントを使わないのであれば”Damus” のようにクライアントの名前にしもよいのかも。

なりすまし対策

NIP-05

アカウントが本人のものであることを認証する方法のようです。
自身が管理するWeb サーバ上に必要な設定をして、Nostr アカウントにそのWeb サーバの設定を指す情報を登録することで、認証バッジを表示させることができるようです。

nostr.directory

Twitter 上で他のユーザにNostr アカウントを持っていることを伝える方法として、Twitter のプロフィール欄にNostr の公開鍵を掲載したり、公開鍵をツイートする方法がありますが、それ以外の方法として、nostr.directory というサイトにNostr アカウントとTwitter アカウントが紐づいていることを登録することで、このサイトでTwitter のユーザ名を入力してそのユーザがNostr アカウントを持っているか確認できるようにすることができるようになります。

手順を掲載しておきます。簡単です。

nostr.directory

[Tweet your nostr pubkey] をクリックするとTwitter のツイートの入力フォームが所定の文言が入力された状態で開きます。

nostr.directory > tweet
nostr.directory > tweet (公開鍵貼り付け後)
公開鍵を貼り付け後

Paste your nostr public key here” という箇所をNostr アカウントの公開鍵に置き換えてツイートします。これで、nostr.directory のサイトで検索すると検索結果に表示されるようになります。

nostr.directory > Twitter Account

Badges が幾つか並んでいて、その中に前述のNIP-05 があるので、ここでもNostr アカウントがなりすましでないかを確認できるようになっています。

リレーサーバの選択について

Damus クライアントでNostr アカウントを作成したら、デフォルトで7つのリレーサーバが設定されていました。
削除や追加を乱暴にしているとアカウントのプロフィール情報や投稿が消えてしまいそうなので、少し仕組みを調べてから変更してみようと思います。

Damus > Account > Relays
Damus > Relays(default)

さいごに

Jack Dorsey といえば分散型SNS「Bluesky」を開発中であることを発表していたので、今回の発表はそれのことか?と思ったら別のものでした。
Bluesky もベータ版のウェイトリストの募集を始めてから3ヶ月ほど経っているので、そろそろ新しい動きがないか気になるところです。

参照

WordPress にCloudflare を導入

はじめに

WordPress の当ブログにCloudflare を導入した際の手順の記録です。
WordPress はさくらのインターネットさくらのレンタルサーバ上に構築されています。
とりあえずCloudflare のCDN を導入したという程度の内容です。

手順

1. Cloudflare のアカウント作成

Cloudflare のサイトにアクセスしてサインアップのリンクをクリックします。

Cloudflare - Create Account

メールアドレスパスワードを入力して[Create Account] をクリックします。

Cloudflare > ダッシュボード

管理画面が表示されました。

先程入力したメールアドレス宛てにメールアカウントを確認するためのリンクが記載されたメールが届くので、メールが届いたらリンクをクリックします。

2. サイトの追加

管理画面の上部にある[Add site] をクリックします。

Cloudflare > サイトの追加

登録するサイトのドメイン名を入力して[Add site] をクリックします。
当ブログを登録するのでmadoverload.com と入力しました。

Cloudflare > Freeプラン

プランを選択します。
今回はFree プランにするので、Free を選択して[Continue] をクリックします。
クリックすると登録するサイトのDNSレコードのスキャンが始まるので、そのまま終わるまで少し待ちます。

Cloudflare > DNSレコード(スキャン結果)

スキャンが終わると、スキャン結果が表示されます。

  • A レコードのContent にはIPv4 のアドレス、AAA レコードにはIPv6 のアドレスが表示されています(さくらのレンタルサーバで割り当てられているIPアドレス)

今回、下記のように変更しました。

Cloudflare > DNSレコード(変更後)
  • A レコードのContent は編集前と同じIPv4 のアドレス、AAAA レコードのContent は編集前のIPv6 のアドレスと同じです
  • ウェブサイト向けのレコードはCloudflare でキャッシュされるようにProxied に、それ以外のメール関係のレコードはキャッシュさせずDNS としてのみ扱われるようにDNS only にしました

変更後、[Continue] をクリックします。

3. ネームサーバの変更

ネームサーバの変更を求めるページが表示されました。

Cloudflare > Change your nameservers

当ブログのWordPress はさくらのレンタルサーバ上に構築しているので、さくらのレンタルサーバ側で設定されているmadoverload.com のネームサーバ情報を、Cloudflare のページ上に表示されているネームサーバ(プライマリとセカンダリの2つの .ns.cloudflare.com)に変更します。

さくらのレンタルサーバ側の設定変更

さくらのレンタルサーバのコントロールパネルを開き、[ドメイン/SSL] > [ネームサーバ設定] をクリックしてドメインコントロールパネルを開きます。

さくらインターネット 会員メニュー > さくらのドメイン一覧

[さくらのドメイン] > [さくらのドメイン一覧] に表示されている当ブログのドメインmadoverload.com の”Whois” をクリックします。

さくらのレンタルサーバ > Whois > ネームサーバ

[Whois] > [ネームサーバ] の[ネームサーバを編集] をクリックして、Cloudflare のネームサーバ(.ns.cloudflare.com)に変更します。

さくらのレンタルサーバ > Whois > ネームサーバ(変更後)

ネームサーバの変更は反映されるのに数時間かかるようです。
反映されたらCloudflare からメールが届くとのことなので、反映されるまでの間にCloudflare 側の各種設定を行います。

4. Quick Start Guide

Cloudflare の管理画面にQuick Start Guide が表示されていたので、この案内に従って設定を進めます。

Cloudflare > Quick Start Guide

[Get started] をクリックします。

Automatic HTTPS Rewrites

Cloudflare > Improve security > Automatic HTTPS Rewrites

混在コンテンツエラーという、https で提供されているウェブサイト上の画像やリンクなどがhttp とhttps が混在することで起きるエラーにならないようにするために、http のコンテンツをhttps に自動で書き換える設定です。

ON のままにしておきます。

Always Use HTTPS

Cloudflare > Improve security > Always Use HTTPS

サブドメインを含めた全てのhttp リクエストをhttps にリダイレクトさせる設定です。
オリジンサーバのリダイレクトも有効になっているとリダイレクトループエラーが起きるので、当機能を有効にする場合はオリジンサーバのリダイレクトを無効にしておくことが推奨されています。

OFF だったのでON にしました。

オリジンサーバであるさくらのレンタルサーバ側のリダイレクトが有効になっていたので無効にします。

  1. コントロールパネルを開き、[ドメイン/SSL] > 対象ドメインの[設定] をクリック
  2. [ドメイン設定] > [HTTPS転送設定] > [HTTPSに転送する] のチェックをOFF にして[保存する] をクリック
さくらインターネット > ドメイン設定 > HTTPS転送設定

Auto Minify

Cloudflare > Optimize performance > AutoMinify

HTML、CSS、JavaScript ファイルを自動圧縮する設定です。

OFF のままにしておきます。

Brotli

Cloudflare > Optimize performance > Brotli

Brotli アルゴリズムを使って圧縮するための設定です。
この設定で行われる圧縮は、Auto Minify に加えて行われるもののようで、HTTP レスポンスのcontent-type ヘッダを見て圧縮する対象を判断するとのことです。

ON のままにしておきます。

Cloudflare > Quick Start Guide > Summary

最後、Summary で設定した内容を確認したら[Finish] をクリックします。

6. SSL/TLS

サイドバーの[SSL/TLS] をクリックします。

Cloudflare > SSL/TLS

Cloudflare とオリジンサーバ間の接続のSSL/TLS のモードを選択します。
4つのオプションから、http, https のどちらにするか、オリジンサーバから提示されたSSL 証明書がどのように検証されるようにするかを選択します。
オリジンサーバへの悪意のある接続を防ぐために、Full, Full(Strict) のどちらかにすることが推奨されています。

Flexible からFull に変更します。

7. Page Rules

Cloudflare でキャッシュするページのルールを設定します。
Free プランではルールを3つ設定することができます。

今回はWordPress 向けのルールを設定します。

Cloudflare > Rules > Page Rules

サイドバーの[Rules] > [Page Rules] のページを開き、[Create Page Rule] をクリックします。

ルール1. WordPress の管理画面をキャッシュしない

Cloudflare > Page Rule 1
  • URL > madoverload.com/wp-admin/*
  • Cache Level > Bypass
  • Disable Performance

ルール2. WordPress のプレビューページをキャッシュしない

Cloudflare > Page Rule 2
  • URL > madoverload.com/*&preview=true*
  • Cache Level > Bypass
  • Disable Performance

ルール3. 上記ルール以外のページをキャッシュする

Cloudflare > Page Rule 3
  • URL > madoverload.com/*
  • Cache Level > Cache Everything
  • Edge Cache TTL > 4 hours
Cloudflare > Page Rules (Position)

登録した3つのPage Rule を登録した順番に並び替えます。(優先度の高い順に並び替えます)

8. Cloudflare のWordPress プラグイン

Cloudflare 社が提供するWordPress 用プラグインです。

このプラグインをWordPress にインストールするとページの読み込みの高速化、SEOの改善、DDoS攻撃やWordPress固有の脆弱性からの保護など、何かとメリットがあるようです。
他にも、Cloudflare のユニバーサル SSL が有効になっている場合に発生するリダイレクトループを防止するヘッダーの書き換えもしてくれます。
ユニバーサルSSL が何のことか分からなかったので思い調べると、どうやらSSL/TLS の設定のことのようで、Flexible, Full, Full(strict) のいずれかにしていたら有効になっているということのようです。

Cloudflare のWordPress 用プラグインのインストール

WordPress にCloudflare のプラグインをインストールします。
今回はWordPress の管理画面の[プラグイン] > [新規追加] で検索したら見つかったので、[今すぐインストール] をクリックしてインストールしました。

Cloudflare WordPress プラグイン > インストール

インストールが完了したらプラグインを有効化して、Cloudflare プラグインの管理画面を表示します。(サイドバーの[設定] > [Cloudflare])

Cloudflare WordPress プラグイン > 有効化

Cloudflare の認証を求めるページが表示されました。
前述の手順「1. Cloudflare のアカウント作成」で既にCloudflare のアカウントを作成しているので、”Sign in here” のhere をクリックします。

Cloudflare WordPress プラグイン > API Credentials 入力

Cloudflare のアカウント作成時に登録したメールアドレスと、Global API Key またはAPI Token を入力して[Save API Credentials] をクリックします。

Global API Key は、Cloudflare の管理画面の[My Profile] > [API Tokens] > [API Keys] > [Global API Key] の[View] をクリックすると表示されるのでこれを入力します。

Cloudflare WordPress プラグイン > ダッシュボード

Cloudflare プラグインの管理画面が使える状態になりました。

Home の一番上に表示されているApply Recommended Cloudflare Settings for WordPress が[Apply] をクリックするだけでWordPress 向けの推奨設定を適用してくれるようで便利そうでしたが、どのような設定をするのかを一つ一つ確認すると時間がかかりそうだったので、今回は適用しないでおきました。

後ほど時間がある時に設定内容を確認したいので、適用される設定の内容が記載されたページのリンクを貼っておきます。

9. Cloudflare が有効になる

Cloudflare の管理画面を見ると、Overview のページに “Great news! Cloudflare is now protecting your site” と表示されていました。

Cloudflare > 有効化 1

左上の[← madoverload.com] をクリックすると、Home 画面のmadoverload.comActive になっています。

Cloudflare > 有効化 2

Cloudflare のアカウント作成時に登録したメールアドレスに、Cloudflare から”Status Active” と記載されたメールが届いていました。
前述「3. ネームサーバの変更」で行ったネームサーバの変更が反映されたようです。

DomainToolsmadoverload.com のWhois 情報を調べるとIP Location が”Cloudflare inc.” になっていました。

Cloudflare がCDN として期待した通りに動作しているか確認します。

  • ブラウザで登録したウェブサイトが正常に表示されるか確認する
  • 登録したドメインのメールアドレスにテストメールを送り受信できるか確認する

問題なければひとまず、Cloudflare の導入が完了です。

あとがき

トラブルと解消方法

上手くいかなかったことがあったので、記録として残しておきます。
一応、今回は下記の方法で解消させることができたという情報です。

  • リダイレクトループ
    • Cloudflare が”Active” になったらオリジンサーバ(WordPress)のページが表示されなくなった。Chrome では”リダイレクトが繰り返し行われました”、Safari では”多くのリダイレクトが発生しています”というメッセージが表示されるようになった。
    • SSL/TLS をFlexible → Full に変更したら解消された(ページが表示されるようになった)
  • WordPress のプレビューページの不具合
    • WordPress のプレビューページが表示されなくなった(プレビューページのタブは開くがページの内容が全く表示されない)
    • CloudflareのWordPressプラグインをインストールしたら解消された(プレビューのページが表示されるようになった)

どうしてCloudflare を導入したのか

CDN を導入することでページの読み込みを高速化できると思われますが、当ブログのアクセス数は1日に100件未満、アクセス元の99%以上が日本なので必要性は全くなかった。なので、これまでWordPress CDN も導入していなかった。

昨年の年末にCloudflare がYubiKey を$10 で購入できるキャンペーンをCloudflare で有効なゾーンを持っているユーザー向けにやっていることを知り、急ぎ年末にCloudflare を導入した次第です。
なお、この特別キャンペーンは2022年12月31日で終了しています。

これを機会にCloudflare のCDN のことをもっと知ることができればと思っています。

参照

YubiKeyのOATHをCLIで扱う

はじめに

前回の投稿「Yubico Authenticator 6」ではYubiKey 5OATH 機能をYubico 社の認証アプリYubico Authenticator を使って操作しましたが、今回はYubiKey ManagerCLIツール (ykmanコマンド) を使って操作してみたのでその解説をします。

ykman コマンドの引数にTwitter のQR コードの値 “otpath://totp/Twitter:@RodentGiant?secret=xxxxx&issuer=Twitter” を指定してYubiKey にアカウントを登録して認証コードを発行する、というようなことの解説です。

扱うコマンドはCLI ツールのOATH コマンドで、Yubico 社の公式サイトにマニュアルが掲載されています。

YubiKey のOATH 機能について

前回の投稿「Yubico Authenticator 6」で解説していたので省略。

YubiKey Manager について

Yubico 社が提供するYubiKey Manager には、ウィンドウ操作のGUI ツールと、コマンドライン操作のCLI ツール の2種類のツールがあります。
今回の投稿はコマンドライン操作のCLI ツールを使った解説になります。

GUI ツールについては、過去の投稿「MacにYubiKey Managerをインストール」で解説しているので興味がある方はご参照ください。
なお、GUI ツールはYubiKey のOATH 機能を操作する機能を備えていないです。

環境について

今回の解説で使う環境です。

  • OS:macOS Monterey
  • YubiKey Manager CLI (ver 5.0.0)
  • YubiKey 5 NFC

インストール(CLIツール)

Yubico 社の公式サイトからCLI ツールのパッケージファイルをダウンロードしてインストールすることができますが、GUI ツールにはCLI ツールも同梱されているので、GUI ツールをインストールしてCLI ツールを使うことも可能です。

  • YubiKey Manager (CLIツール)のパッケージファイル
    • インストールすると自動でパス指定される
    • CLI ツールのバージョンが最新(ver. 5.0.0)
  • YubiKey Manager (GUIツール)のパッケージファイル
    • CLI ツールが同梱されている(パス指定が必要)
    • CLI ツールのバージョンが最新ではない(ver. 4.0.7)

ただ、2022年12月23日時点ではありますが、GUI ツールに同梱されているCLI ツールは最新のver.5.0.0 ではないので、最新を使いたい場合はCLI ツールを単体でインストールする必要があります。

もし、GUI ツールと最新のCLI ツールの両方を使いたい場合は、GUI ツールに同梱されているCLI ツールはパス指定が自動で行われないので、両方とも単純にインストールするだけで最新のCLI ツールが使える状態になります。

なお、macOS ユーザーの場合は、Homebrew を使ってCLI ツールをインストールすることもできます。こちらは最新のバージョン(ver. 5.0.0)になっていました。

各リンク先を貼っておきます。

各種環境のインストール方法が掲載されているYuboco 社のページが参考になりそうなのでリンクを貼っておきます。

Homebrew を使ってインストール

今回、Homebrew を使ってCLIツールのみをインストールします。

ターミナルで下記のコマンドを実行してインストールします。

brew install ykman

インストール後にykman コマンドに既にパスが通っていることを確認します。バージョンは5.0.0 です。

% which ykman
/opt/homebrew/bin/ykman

% ykman -v
YubiKey Manager (ykman) version: 5.0.0

OATH 機能を使う(アカウントの登録〜認証コードの生成)

CLI ツールを使ったアカウントの登録は、2要素認証を登録するサービス側が表示するQR コードの情報を使って行います。

例として、Twitter とGoogle で表示されたQR コードのページとQR コードの情報(QR コードをスキャンして読み取ったURI)を載せておきます。

Twitter

Twitter > QRコード
QRコード
Twitter > shared secret
shared secret
otpauth://totp/Twitter:@RodentGiant?secret=ABCDEFGHIJKLMNOP&issuer=Twitter

“Can’t scan the QR code?” をクリックするとshared secret が表示されたページが表示されました。

Google

Google > QRコード
QRコード
Google > shared secret
shared secret
otpauth://totp/Google:giantrodents@gmail.com?secret=abcdefghijklmnopqrstuvwxyz012345&issuer=Google

“スキャンできない場合” をクリックするとshared secret が表示されたページが表示されました。

アカウントの登録(URI を指定する)

QR コードをスキャンして読み取ったURI をそのまま指定して登録します。

ykman oath accounts uri "otpauth://totp/Twitter:@RodentGiant?secret=ABCDEFGHIJKLMNOP&issuer=Twitter"

認証コードの発行にYubiKey のタッチを要求するようにする場合は-t オプションを指定します。

ykman oath accounts uri -t "otpauth://totp/Twitter:@RodentGiant?secret=ABCDEFGHIJKLMNOP&issuer=Twitter"

アカウントの登録(shared secret を指定する)

shared secret を指定して登録します。

Twitter とGoogle では前述のQR コードを表示するページからリンクできるページでshared secret を確認することができます。
また、URI のクエリパラメータsecret の値がshared secret なので、URI で確認することもできます。

URI に含まれる要素を分解してshared secret 以外のオプションを指定するので、オプションの意味が分かりやすいように、ハイフン2つのオプションも併記しておきます。

ykman oath accounts add -i Twitter -o TOTP @RodentGiant ABCDEFGHIJKLMNOP
ykman oath accounts add --issuer Twitter --oath-type TOTP @RodentGiant ABCDEFGHIJKLMNOP

認証コードの発行にYubiKey のタッチを要求するようにする場合は-t オプションを指定します

ykman oath accounts add -i Twitter -o TOTP -t @RodentGiant ABCDEFGHIJKLMNOP

アカウント情報の一覧を表示

YubiKey に登録されているアカウントの情報を一覧で表示します。

% ykman oath accounts list -H -o -P
% ykman oath accounts list --show-hidden --oath-type --period
Twitter:@RodentGiant, TOTP, 30

-H オプションは非表示アカウントを表示するためのもののようですが、そもそも非表示アカウントが何か調べても分かりませんでした。-H オプションは指定しなくても結果は変わらなかったので、指定する必要ないのかもしれません。

認証コードの生成

アカウントを絞り込む条件を指定しないでコマンドを実行します。

% ykman oath accounts code
Google:RodentGiant    [Requires Touch]
Twitter:@RodentGiant            001542

アカウントが2つ登録されている場合、上記のように出力されます。

出力されるアカウントが2つ以上ある場合、アカウントの登録時に-t オプションを指定したアカウントは[Requires Touch] と表示されます。

-tオプションを指定したアカウントの認証コードの発行

アカウント登録時に-t オプションを指定したアカウントの認証コードを発行するためには、1つのアカウントのみ出力されるようにする必要があります。
YubiKey に複数のアカウントが登録されている場合は、アカウントを絞り込む条件(部分一致)を指定します。

% ykman oath accounts code Google:RodentGiant
Touch your YubiKey...
Google:RodentGiant  302862

2行目でYubiKey のタッチが要求され、タッチすると3行目の抽出したアカウントのアカウント名と認証コードが表示されます。

認証コードのみ出力する

-s オプションを指定して認証コードのみ出力することもできます。
この場合も、1つのアカウントのみ出力されるようにする必要があります。

% ykman oath accounts code -s Twitter:@RodentGiant
% ykman oath accounts code --single Twitter:@RodentGiant
001542

OATH 機能を使う(アカウントの管理)

アカウントの名前変更

% ykman oath accounts rename Twitter:@RodentGiant "Twitter:RenamedName"
Rename account: Twitter:@RodentGiant ? [y/N]: y
Renamed Twitter:@RodentGiant to Twitter:RenamedName.

アカウントにissuer を設定していた場合、変更後の名前の左に”:”(セミコロン)を付けてissuer を指定しないとissuer が削除されます。
上記例では”Twitter” がissuer 、”RenamedName” が変更後のアカウント名です。

アカウントの削除

% ykman oath accounts delete Twitter:@RodentGiant
Delete account: Twitter:@RodentGiant ? [y/N]: y
Deleted Twitter:@RodentGiant.

サービス側の2要素認証の設定も削除する必要があるので注意が必要です。
削除する順番を(1)サービス側の2要素認証の設定を削除、(2)YubiKey 側のアカウントを削除、とすればログイン時にサービス側から2要素認証の認証コードの入力を求められるけれど発行できないという状況は回避できるでしょう。

OATH 機能を使う(パスワード関連)

前回の投稿「Yubico Authenticator 6」のあとがき「YubiKey の紛失や窃取によるアカウント情報の漏洩」で少し解説していますが、YubiKey のOATH 機能にパスワードを設定することができます。
YubiKey を不正に入手した第三者への、YubiKey に登録されているアカウント情報の漏洩と、認証コードの発行を防ぐことができるので、安全のためにはパスワードは設定しておいた方がよさそうです。

なお、これまでの例示したコマンドはパスワードが設定されていない例になります。
パスワードが設定されていると、コマンドを実行する度にパスワードの入力が求められるようになります
アカウント情報の一覧を表示するコマンドの場合、下記のようになります。

% ykman oath accounts list -H -o -P
Enter the password:

-p オプションでコマンドにパスワードの文字列を付加することで、「Enter the password:」を表示しないで結果を得ることができますが、ターミナルに実行したコマンドの記録が残るのは望ましくないと思うので個人的には使わないようにしています。

% ykman oath accounts list -H -o -P -p 123456
Twitter:@RodentGiant, TOTP, 30

パスワードの設定(初期登録・変更)

YubiKey のOATH 機能は、初期状態ではパスワードが設定されていないです。
パスワードを初期登録する場合と、初期登録後に変更する場合で使うコマンドは同じです。

% ykman oath access change
Enter the new password:
Repeat for confirmation:
Password updated.

パスワードの削除

YubiKey のOATH 機能に設定されているパスワードを削除します。削除するとコマンドの実行時にパスワードの入力を求められなくなります。

% ykman oath access change -c
Enter the current password:
Password cleared from YubiKey.

パソコンにパスワードを記憶

パスワードをパソコンに記憶させておくことにより、コマンドを実行する度にパスワードの入力が求められないようにすることができます。
裏で記憶しておいたパスワードが自動入力される感じです。

% ykman oath access remember
Enter the password:
Password remembered.

一度、このコマンドを実行しておけば、同じパソコンであればパソコンを再起動しても記憶された状態が保たれます。
仕組みとしては、~/.ykman/oath.json というファイルに記憶されるようです。

パソコンに記憶したパスワードを削除

パソコンに記憶されているパスワードを削除します。削除した場合、YubiKey のOATH 機能のパスワードが設定されたままだと、コマンドの実行時にパスワードの入力が求められるようになります。

% ykman oath access forget
Password forgotten.

YubiKey のOATH 機能のパスワードの変更や削除をした場合、パソコンに記憶したパスワードは使えなくなるので、パソコンに新しいパスワードを記憶するか、このコマンドでパソコンに記憶されているパスワードを削除します。

あとがき

YubiKey のOATH 機能のパスワード設定について

  • YubiKey 紛失時の備えとして、パスワードは設定しておいた方がよさそう
  • コマンドを入力する度にパスワードを入力するのは面倒なので、パソコンに記憶させる機能は使った方がよい
  • 設定したパスワードを失念すると、パスワードの変更も削除もできなくなる
    • YubiKey に登録したアカウントの認証コードが発行できなくなる
    • YubiKey のOATH をリセットするしかない
    • パスワードはパスワードマネージャーに登録しておいた方がよい

Yubico Authenticator を使えば良いのでは?

YubiKey のOATH 機能は、Yubico Authenticator であればGUI で操作できるので、一般的な用途ではCLI ツールを使う必要がなさそう。
ざっと見た感じ、CLI ツールでできることはすべてYubico Authenticator でできると思われる。

サーバ側で認証コードを発行する仕組みを作るのにCLI ツールを使うにしても、YubiKey 5 のOATH 機能を使う場合、YubiKey 5 のOATH に登録できるOATH-TOTP の上限が32 なので、用途としては向いていなそう。

参照

%d人のブロガーが「いいね」をつけました。