NIP-05認証バッジの付け方
自分のホームページなどをお持ちの方は、https://あなたのドメイン名/.well-known/nostr.json にファイルを設置することで自分のプロフィールに認証バッジを付けることができます。
認証バッジをつけると、本人であることを証明したり、スパムでないことを照明したりすることができます。詳しくはドメイン認証のページをお読みください。 1. 自分の公開鍵(npub1...)を見つけて、16進数表記に変換する
自分のプロフィールを開き、自分の公開鍵(npub1...)をコピーしましょう。
コピーの方法はクライアントによって異なります。「IDをコピーする」というようなボタンがある場合もあれば、npub1...のような表記の横にコピーボタンがある場合もあります。
※秘密鍵(nsec1...)と間違えないように!秘密鍵は誰にも教えてはいけません。
コピーが終わったら、npub...形式の公開鍵をHEX公開鍵(16進文字列)に変換する必要があります。
(一部のクライアントはHexと書いてあるボタンから直接コピーできます)
2. ファイルを設置する
https://自分のドメイン/.well-known/nostr.jsonにファイルをアップロードします。
外部からアクセスできるディレクトリに .well-known/nostr.json をつくり、以下の内容を書いてください。
code:json:nostr.json
{
"names": {
"ここにあなたのID": "ここにあなたのHEX公開鍵 - npubじゃないよ"
}
}
あなたのIDの部分には、TwitterのIDのような自分を表すテキストを設定できます。
使える文字は a-z と 0-9 と - _ . のみです。英大文字や日本語は利用できません。
IDを複数個記述することもできます。
code:nostr.json
{
"names": {
"ここにあなたのID": "ここにあなたのHEX公開鍵 - npub...の形式は使えないので注意",
"ここに二人目のID": "ここに二人目のHEX公開鍵 - npub...の形式は使えないので注意"
}
}
なお、IDを_(アンダースコア)にすれば、クライアントで表示されるときにドメイン名だけが表示されるようになります。
(対応しているクライアントのみ)
code:nostr.json
{
"names": {
"_": "ここにあなたのHEX公開鍵。npub...の形式は使えないので、後述のツールで変換"
}
}
実際の例
code:nostr.json
{
"names": {
"jack": "82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2"
}
}
うまくアップロードできたかどうかを確認するには、ブラウザでhttps://自分のドメイン/.well-known/nostr.jsonを開き、問題なく表示できるかを確認するとよいでしょう。
3. プロフィールの設定
その後、お使いのNostrクライアントのプロフィール設定のNIP-05欄またはNostrアドレス欄に
JSONに記述したID@あなたのドメインを入力します。
例えば筆者の場合、 h2so4@personal-portal.vercel.app になりましたh2so4.icon
上の例だと jack@nostr.directory うまく設定できているかどうか
スマートフォンクライアントでバッジが付いているかを確認
Webクライアントでもバッジが付いているかを確認
https://nostter.app/jack@nostr.directory
よくあるミス
公開鍵がHEXでなくnpubになっている
アクセス可能なディレクトリの直下にnostr.jsonを作っている
404 Not Foundのようなエラーが表示される場合は、適切な場所にファイルを設置できていません。
.well-knownフォルダを作成しその下に格納する必要があります
公開鍵ではなく秘密鍵を置いてしまっている
これまでに複数の事例あり、秘密鍵流出事案となるためすべてアカウント作り直しとなった yto.icon
変換サイトに入力するときは、必ずnpub〜から始まる文字列を貼り付けましょう。間違ってもnsec〜から始まるものを使わないように… heguro.icon
IDに英大文字を使ってしまっている
IDに使える文字は a-z と 0-9 と - _ . のみです (仕様) yto.icon Github Pages で認証されない
理由: GitHub Pagesでは .well-known が無視されてしまう
GitHub Pagesのデフォルトの静的サイトジェネレータであるJekyllが、.で始まるファイル、すなわち.well-knownを無視するので、.nojekyllという空ファイルを一番上のディレクトリに置いてJekyllを使用しない設定にした上でgit pushする必要がありました。GitHub docs takaria0.icon ルートに .nojekyll の名の空ファイルを置くと認証される。その他下記参照 koteitan.icon
Jekyllを使っている人は _config.yml に include: [".well-known"]と書くと含めると良いそうです 参照 CORSの設定ミス
Webクライアントでのみ認証が通らない場合は、CORSが正しく設定されていない可能性があります。アップロード先(WebサーバやWebホスティングサービス)のCORS設定を確認してください。 CORS 設定でハマっている人もよくみる気がしますhideyoshi.icon
そうですね、認証を通すためにはCORSを有効にする必要がありますねh2so4.icon
自分のドメインを所有していない場合
自分のドメインを所有していなくても、github pages とか vercel とかでホストしたWebサイトのメディアとしてJsonを格納しても成功します。h2so4.icon
この機にちょっとしたポートフォリオなど作成してみては?h2so4.icon
認証を付けてくれるWebサービスがいくつか存在します
Iris(iris.to): 登録ユーザ(一定額の支払いを確認)であることを証明してくれます。 その他Tips
nostr.jsonへはhttpsにて取得しにくるようなので、格納するサーバにSSL必須TKG3.icon
NIP-05欄を 識別子@ドメイン/hoge とした場合には ドメイン/hoge/.well-known/ を見に行ってくれるクライアントが多いです heguro.icon
実装によっては表示にも反映されるので、 .well-knownまでのパスを絵文字にして遊べたりします
本来.well-knownはドメインのトップに置く必要がある(RFC8615)ため、全てのクライアントが同様の挙動をしてくれるとは限らず、あまり推奨はされません 一部のレンタルサーバは、Cookieがないとレスポンスを返さない?
解説記事
過去の情報
「認証を付けてくれるWebサービス」のたぐいは、有名なものは一部クライアントではバッジがつかない or 横線が引かれる、など検知されることがあります。 →CORSの設定ミスの模様です
Snortでは取り消し線が引かれるらしい?
されないサービスもあるかも知れませんが、いずれされるでしょう
あれ、そうなんですか?少なくとも iris.to では横線が引かれるのは認証が通っていない(正しい公開鍵でない・CORS設定等でアクセスできない)ときの表示だと思うのですが、仕様に準拠していてもそのような表示になることはあるのでしょうか?hideyoshi.icon
クライアント独自でそのような機能を作ることはできると思いますが、だとしたらそのような blocklist を公開していそうな気がしますhideyoshi.icon
Snortで横線が引かれているというPostを見た気がしたのですが、検索しても見つけられずorz もしかしたら誤りかもしれません。h2so4.icon
でも、.co.jp や .gov といったドメイン以外でこの認証によってバッジをつける意味はあまりない気がするので、他におもしろい使い方を考えられると楽しそうですねhideyoshi.icon