logo
GeekFormat

Security.txt ジェネレーター

security.txt ジェネレーター

RFC 9116に準拠して出力され、/.well-known/security.txtにすぐにデプロイできます。

開示情報

他のパスでのなりすましを防ぐため、security.txtのCanonical URLを宣言してください

生成された出力

RFC 9116 規格に準拠した security.txt ファイルをオンラインで生成し、セキュリティ研究者に正式な脆弱性報告窓口を提供します。リアルタイムプレビュー、ワンクリックコピーに対応、/.well-known/security.txt にそのままデプロイするだけで有効化できます。

関連おすすめ

ユースケース

  • 企業サイト、SaaSプラットフォーム、ECサイトで正式な脆弱性報告チャネルを構築し、ContactメールアドレスとPolicyセキュリティポリシーページを設定
  • PGP暗号化公開鍵URLを公開し、セキュリティ研究者が機密性の高い脆弱性の詳細を暗号化して送信できるようにし、平文送信による漏洩を防止
  • Acknowledgments セキュリティ殿堂入りページURLを設定し、脆弱性を報告してくれた研究者を公に感謝することでセキュリティコミュニティからの信頼を向上
  • Hiring セキュリティ採用リンクを設定し、セキュリティ研究者やホワイトハッカーにチームの採用情報を積極的にアピールし、セキュリティ人材を獲得
  • Expires 有効期限タイムスタンプを設定し、チームに定期的なセキュリティ連絡先の審査と更新を促し、情報の失効による脆弱性報告の不通を防止
  • Canonical フィールドで security.txt ファイルの正規URLを宣言し、攻撃者による悪意のある security.txt の偽造と研究者の誘導を防止
  • 政府、金融、医療などコンプライアンス要件の厳しいウェブサイトで、脆弱性開示ポリシー(VDP)構築要件を満たし、業界規制のベストプラクティスに準拠
  • オープンソースプロジェクト、個人ブログ、APIサービスでセキュリティ連絡窓口を素早く設置し、セキュリティ問題への積極的な姿勢を示す

特徴

  • RFC 9116 最新規格に厳密準拠:出力フォーマットが完全に仕様に適合しており、本番環境にそのままデプロイ可能
  • 複数 Contact 連絡先に対応:1行に1件ずつ、メール(mailto:)、URL(https://)、電話番号(tel:)を個別に宣言可能
  • 完全なフィールドカバー:Contact、Expiresの必須フィールドに加え、Encryption、Acknowledgments、Policy、Hiring、Canonical、Preferred-Languagesの全オプションフィールドに対応
  • リアルタイムプレビュー生成:設定を変更すると即座に security.txt の内容が更新され、生成ボタンをクリックする必要がないWYSIWYG方式
  • 自動言語宣言:現在のページ言語に応じて Preferred-Languages フィールドを自動付与し、国際的なセキュリティ研究者からの報告に対応
  • ISO 8601 時間フォーマット:Expiresフィールドは標準UTC時間フォーマットを使用し、最新のRFC仕様に準拠
  • フィールドフォーマット検証:Contactのプレフィックス(mailto:/https:/tel:)とExpiresの時間フォーマットを自動チェックし、無効な出力を防止
  • ワンクリックコピー:クリックするだけで全文をクリップボードにコピー、貼り付けるだけでデプロイ完了
  • サンプルテンプレート内蔵:デフォルトでサンプル形式が入力されており、ゼロから作成することなく自身の情報に素早く置き換え可能
  • 純フロントエンドでローカル実行:設定情報はブラウザローカルで処理され、いかなるサーバーにもアップロードされません
  • デプロイパスガイド:生成後に /.well-known/security.txt の標準デプロイパスとWebサーバー設定のポイントを表示
  • 完全無料でウォーターマークなし:生成されたファイルにウォーターマークや制限は一切なく、商用サイトでもそのまま利用可能

使い方

  1. Contact エリアにセキュリティ連絡先のメールアドレスまたはURLを入力してください(1行1件、複数行対応。メールはmailto:プレフィックス、URLはhttps://プレフィックスが必要です)
  2. 必要に応じて Encryption(PGP公開鍵URL)、Acknowledgments(謝辞殿堂入りページ)、Policy(脆弱性開示ポリシーページ)、Hiring(セキュリティ採用ページ)、Canonical(ファイル正規URL)などのオプションフィールドを設定
  3. Expires 有効期限を設定してください(ISO 8601形式のUTC時間、例:2027-12-31T23:59:59Z。6〜12ヶ月後に設定することを推奨)
  4. 右側でリアルタイムに生成内容をプレビューし、フォーマットに問題がなければコピーボタンをクリック
  5. ウェブサイトのルートディレクトリに .well-known フォルダを作成し、内容を security.txt として保存して配置
  6. Webサーバー(Nginx/Apache/Caddyなど)を設定し、https://あなたのドメイン/.well-known/security.txt でアクセスできるようにし、Content-Type を text/plain に設定

よくある質問

security.txt とは何ですか?なぜウェブサイトに必要なのですか?

security.txt は IETF が RFC 9116 で定義したWebセキュリティ標準で、ウェブサイトがセキュリティ連絡先情報を公開するための標準化された方法を提供します。セキュリティ研究者(ホワイトハッカー)があなたのウェブサイトでセキュリティ脆弱性を発見した際、誰に連絡すべきか、どのように暗号化して報告を送信するか、どの開示ポリシーに従うべきかを知る必要があります。security.txt がなければ、研究者は正しい連絡先を見つけられず、脆弱性が公開されたり悪用されたりする可能性があります。Google、GitHub、Facebook/Meta、英国政府、米国CISA、フランス/イタリア/オランダ/オーストラリア政府などが既にこの標準を採用しています。

security.txt はウェブサイトのどのパスに配置すべきですか?

RFC 9116 標準に従い、security.txt は /.well-known/security.txt パスに配置する必要があります(つまりウェブサイトのルートディレクトリにある .well-known フォルダ内です)。また、後方互換のためにウェブサイトのルートに /security.txt を配置することもできます。HTTPS経由でアクセスできる必要があり、Content-Type は text/plain でなければなりません。他のパスに配置すると、自動セキュリティスキャンツールが認識できなくなります。

Contact フィールドはどのような連絡先形式に対応していますか?複数入力できますか?

3つの形式に対応しています:メールアドレスは mailto: プレフィックスを使用する必要があり(例:mailto:security@example.com)、WebページURLは https:// プレフィックスを使用する必要があり(例:https://example.com/security-report)、電話番号は tel: プレフィックスを使用する必要があります(例:tel:+1-201-555-0123)。複数の連絡先を入力でき、1行に1件ずつ記載することで、セキュリティ研究者が最も連絡しやすいチャネルを選択できるようになります。少なくともメールアドレス1つとWebフォームリンク1つを提供することを推奨します。

Expires フィールドは必須ですか?フォーマットにはどのような要件がありますか?

Expires は必須フィールドです(Contactも必須で、その他は任意です)。Expiresはsecurity.txtの内容の有効期限を示し、ISO 8601形式のUTC時間を使用する必要があります。例:2027-12-31T23:59:59Z(ZはUTCタイムゾーンを示します)。作成後6〜12ヶ月で有効期限が切れるように設定し、定期的にセキュリティ連絡先情報を更新するようにしてください。有効期限が切れると、自動ツールはそのファイルの情報が失効している可能性があると判断します。

なぜ Encryption フィールドが必要なのですか?必ずPGP公開鍵を配置しなければなりませんか?

EncryptionフィールドはPGP公開鍵の場所を指し、セキュリティ研究者がこの公開鍵で脆弱性報告を暗号化してから送信することで、メール送信中に脆弱性の詳細が傍受・漏洩することを防ぎます。これは必須フィールドではありませんが、設定することを強く推奨します——脆弱性情報は非常に機密性が高く、平文メールはISP、メールサーバー管理者、攻撃者に盗み見られる可能性があります。PGP公開鍵を /.well-known/pgp-key.txt に配置し、そのURLをEncryptionフィールドに記入してください。

Acknowledgments フィールドは何のためのものですか?なぜ謝辞ページを設けるのですか?

Acknowledgmentsフィールドは公開謝辞ページ(セキュリティ殿堂入り/Hall of Fameとも呼ばれます)を指し、あなたにセキュリティ脆弱性を報告してくれた研究者の名前またはIDを掲載します。これはセキュリティ研究者の貢献に対する公的な承認であり、より多くのホワイトハット研究者に脆弱性を探してもらうための効果的な方法です。多くのセキュリティ研究者は、公開謝辞の仕組みがあるウェブサイトを優先的にテストします——貢献が認められることを知っているからです。

Policy フィールドにはどのような内容をリンクすべきですか?

Policyフィールドには、あなたの脆弱性開示ポリシー(Vulnerability Disclosure Policy, VDP)ページをリンクすべきです。このページには以下の内容を明確に記載する必要があります:どのようなテスト行為が許可されているか(DDoS、ユーザーデータへのアクセスなど禁止されている行為)、脆弱性報告の対応時間の約束、賞金を提供するかどうか、合法的なセキュリティ研究に対する法的セーフハーバーの約束(善意の研究者を訴追しないこと)など。明確なPolicyがあることで、セキュリティ研究者は法的な不安なく安心して問題を報告できるようになります。

Canonical フィールドの用途は何ですか?記入する必要がありますか?

Canonicalフィールドはsecurity.txtファイル自体の正規URLを宣言するためのものです。1つのウェブサイトで複数のドメインやパスからsecurity.txtにアクセスできる場合があります(example.comとwww.example.comなど)、CanonicalフィールドはどのURLが公式で信頼できるバージョンかを研究者に伝えます。これにより、攻撃者が何らかのパスに偽造したsecurity.txtを配置し、研究者が攻撃者に脆弱性報告を送信するよう誘導することを防げます。正式なドメインURLを記入することを推奨します。例:https://example.com/.well-known/security.txt。

Preferred-Languages フィールドはどういう意味ですか?

Preferred-Languages はセキュリティチームがどの言語の報告に対応できるかをセキュリティ研究者に伝えるもので、カンマ区切りの言語コードで表記します(例:en, zh-CN, ja)。このジェネレーターは、現在使用しているページ言語に応じてこのフィールドを自動的に設定します。セキュリティ研究は国際的な活動であり、研究者はどの国にいるかわからないため、対応可能な言語を事前に明示することで言語の不通によるコミュニケーションの失敗を防げます。

Hiring フィールドも security.txt に配置する必要がありますか?

はい、Hiring は RFC 9116 標準で定義されているオプションフィールドの1つです。このフィールドはセキュリティチームの採用ページを指します。セキュリティ研究者はそれ自体が優秀なセキュリティ人材の候補です——あなたのウェブサイトの脆弱性を発見できるということは、高いセキュリティ能力を持っていることを意味します。security.txtに採用リンクを配置することは、非常に精度の高いセキュリティ人材の採用方法となります。Googleを含む多くの有名企業がsecurity.txtに採用リンクを配置しています。

セキュリティ連絡先メールアドレスを配置すると大量のスパムメールが届きませんか?

これはウェブサイト運営者に最もよく見られる懸念事項です。スパムを減らす方法はいくつかあります:第一に、メールアドレスを直接記載せず、セキュリティ報告WebフォームのURL(https://プレフィックス)を配置し、フォームに認証コードを追加してボットをフィルタリングする方法。第二に、専用のセキュリティメールエイリアス(security@など)を使用し、スパムフィルターを適切に設定する方法。第三に、PGP公開鍵暗号化方式を提供する方法——自動化されたスパム送信者はPGP暗号化を使用しません。第四に、Policyにセキュリティ脆弱性に関する報告のみを受け付けることを明記する方法。実際には、security.txtを導入したほとんどのウェブサイトからはスパムの増加は顕著ではないものの、脆弱性報告は大幅に増加したとのフィードバックが寄せられています。

security.txt はデジタル署名が必要ですか?その方法は?

RFC 9116 では、OpenPGPクリアテキスト署名(cleartext signature)によるsecurity.txtのデジタル署名が推奨されています(ただし必須ではありません)。これにより、研究者はファイルが確かにウェブサイトの公式によって発行され、攻撃者によって改ざんされていないことを検証できます。方法はGPGツールでファイルをclearsignすることです:gpg --clearsign -o security.txt.sig security.txt。その後、署名された内容(-----BEGIN PGP SIGNED MESSAGE-----で始まるもの)を最終的なsecurity.txtの内容として配置します。ただし、これは高度な操作であり、ほとんどのウェブサイトは署名なしでも正常に利用できます。

Nginx/Apache/Caddy では security.txt をどのように設定すべきですか?

コアな設定要件は以下の通りです:/.well-known/security.txt パスがアクセス可能であること、Content-Type が text/plain を返すこと、HTTPSを使用すること、このパスに対してリダイレクトを行わないこと(特に他のドメインへのリダイレクトは行わないこと)。Nginxではlocationで完全一致を使用できます:location = /.well-known/security.txt { default_type text/plain; alias /path/to/security.txt; };Apacheでは.htaccessが.well-knownディレクトリへのアクセスをブロックしていないことを確認;Caddyではhandle_pathで直接指定するだけで設定できます。

小さなウェブサイト(個人ブログ/オープンソースプロジェクト)でも security.txt を配置する必要がありますか?

配置することを強く推奨します。ウェブサイトの大小に関わらず、ユーザーデータがある、またはインターネット上でサービスを提供している限り、セキュリティ脆弱性が存在する可能性があります。security.txt の導入コストは非常に低く——このツールを使えば2分で生成でき、ファイルを1つ配置するだけです。Google、GitHubなどの大手企業が使用しているのと同じように、個人開発者やオープンソースプロジェクトでも同様に利用できます。これは費用対効果の非常に高いセキュリティプラクティスです:ほぼゼロコストで、脆弱性を発見した善意の研究者が問題をあなたに知らせる手段を提供できます——それがなければ、研究者は何も言わずに立ち去るか、脆弱性を公開してしまうかもしれません。

security.txt と robots.txt の違いは何ですか?

どちらも/.well-known/(またはルートディレクトリ)に配置される標準テキストファイルですが、用途は全く異なります:robots.txtは検索エンジンクローラー向けで、どのパスをクロールすべきでないかを伝えます;security.txtはセキュリティ研究者向けで、脆弱性を発見した際の連絡方法を伝えます。検索エンジン向けとセキュリティ研究者向け、両者は補完的で衝突するものではなく、同時にデプロイできます。

security.txt について:ウェブサイトセキュリティ開示標準の完全ガイド

security.txt は IETF(インターネット技術タスクフォース)が RFC 9116 で正式に標準化したWebセキュリティのベストプラクティスであり、ウェブサイトがセキュリティ連絡先情報を公開するための統一された標準的な方法を提供することを目的としています。簡単に言えば、これはウェブサイトの固定パスに配置されたテキストファイルで、セキュリティ研究者(ホワイトハッカー)に対して「私のウェブサイトでセキュリティ脆弱性を発見した場合、こちらが私たちへの連絡方法です。こちらが暗号化公開鍵、こちらが開示ポリシーです。報告を歓迎します。」と伝えるものです。

security.txt 標準が登場する前は、ウェブサイトのセキュリティ連絡先情報は統一されていませんでした。セキュリティ連絡先が全く記載されていないサイトもあれば、どこかの隅のページに隠れているサイト、誰も見ていないinfo@メールアドレスだけが記載されているサイト、LinkedInでセキュリティチームを探すのに苦労するサイトもありました。これは深刻な問題を引き起こしました:善意のセキュリティ研究者が脆弱性を発見しても、正しい報告チャネルを見つけられないことが多かったのです。その結果——多くの脆弱性がそのまま放置され、修正されることなく、悪意のあるハッカーに発見・悪用されるまで待つしかありませんでした。security.txt はまさにこの「ラストワンマイル」の問題を解決するために誕生しました。

security.txt のコンセプトは、セキュリティ研究者 EdOverflow と Yakov Shafranovich によって2017年に最初に提案され、業界から幅広い支持を迅速に獲得しました。2022年4月、security.txt は IETF によって正式に RFC 9116 標準として承認され、国際的に認められたWebセキュリティ標準となりました。現在では、Google、GitHub、Meta(Facebook)、LinkedIn、Cloudflareなどの大手テクノロジー企業に加え、英国政府、米国CISA(サイバーセキュリティ・インフラストラクチャセキュリティ庁)、フランス政府、イタリア政府、オランダ政府、オーストラリアサイバーセキュリティセンターなどの政府機関が公式ウェブサイトに security.txt をデプロイし、他の組織にも採用を公に推奨しています。

security.txt ファイルのコアな設計は非常にシンプルです——一連の「フィールド名: 値」の行で構成される単なるプレーンテキストファイルで、HTTPヘッダーのような形式です。標準では2つの必須フィールドが定義されています:Contact(セキュリティ連絡先、複数指定可)とExpires(ファイル有効期限)。また、複数のオプションフィールドがあります:Encryption(PGP暗号化公開鍵URL)、Acknowledgments(謝辞ページURL)、Policy(脆弱性開示ポリシーURL)、Hiring(セキュリティ採用URL)、Canonical(ファイル正規URL)、Preferred-Languages(対応報告言語)、CSAF(セキュリティアドバイザリフレームワークメタデータURL)。このシンプルなフォーマットにより、人間にも機械にも容易に解析できるようになっています。

なぜ security.txt の導入がこれほど重要なのでしょうか?第一に、脆弱性報告のハードルを下げることです。セキュリティ研究者は連絡先を探すのに多くの時間を費やす必要がなくなり、正しい報告チャネルをワンクリックで見つけられます。第二に、組織のセキュリティに対する積極的な姿勢を示します——security.txtがあるウェブサイトは「私たちはセキュリティを重視しており、責任ある報告を歓迎します」と言っているようなものです。第三に、脆弱性が公開されたり悪用されたりするリスクを減らします:研究者に正式なチャネルがあれば、連絡がつかないからといってTwitterやGitHubで脆弱性を直接公開することがなくなります。第四に、多くの業界規制要件(金融、医療、政府など)では、脆弱性開示チャネルの構築がコンプライアンス要件となっています。

security.txt をデプロイする際に注意すべき重要な詳細事項がいくつかあります。第一に、パスが正しいこと:標準パスは /.well-known/security.txt であり、後方互換のためにルートに /security.txt を配置することもできます。ここでの.well-knownディレクトリはRFC 8615で定義された標準の「既知のリソース」ディレクトリであり、robots.txtなどの他の標準ファイルも関連する場所に配置されます。第二に、HTTPS経由で提供する必要があり、平文HTTPは安全でないとみなされます。第三に、Content-Typeはtext/plainでなければならず、text/htmlやその他のタイプであってはなりません。第四に、security.txtに対してドメインをまたいだリダイレクトを行わないこと——https://example.com/.well-known/security.txt が https://other-domain.com/security.txt にリダイレクトされると、研究者や自動ツールはこれを疑わしいと判断します。第五に、Expiresフィールドを設定して定期的に更新することを忘れないでください。有効期限の切れたsecurity.txtは情報が信頼できないとみなされます。

Contactフィールドはsecurity.txtで最も重要なフィールドであり、本当に不可欠な唯一のフィールドです(Expiresも必須ですが、単なるタイムスタンプです)。Contactは3つのURI形式をサポートしています:mailto:はメールアドレス用、https://はWebページリンク(セキュリティ報告フォームページなど)用、tel:は電話番号用です。少なくともmailtoメールアドレス1つとhttpsフォームリンク1つを提供することを強く推奨します——フォームはボットによるスパムを防止し、メールは研究者が暗号化された報告を直接送信するのにより便利です。複数の連絡先を複数行でリストできます。例えば、セキュリティチームのメール、セキュリティ責任者のメール、第三者の脆弱性プラットフォームのリンクなどを同時に提供できます。

Encryptionフィールドはオプションですが、実務上は非常に重要です。セキュリティ研究者が深刻な脆弱性(ユーザーデータ漏洩、リモートコード実行など)を発見した場合、彼らは脆弱性の詳細を平文メールで送信したくありません——メールは送信中に複数のサーバーを経由し、そのうちのいずれかの段階で盗み見られる可能性があるからです。PGP(Pretty Good Privacy)公開鍵暗号化は業界標準の安全な通信方法です。PGP鍵ペアを生成し、公開鍵をウェブサイトに配置して(例:/.well-known/pgp-key.txt)、そのURLをEncryptionフィールドに記入するだけです。研究者はあなたの公開鍵で報告内容を暗号化し、対応する秘密鍵を持つ人だけが復号して読むことができます。

Policyフィールドはあなたの脆弱性開示ポリシー(Vulnerability Disclosure Policy, VDP)ページにリンクしており、これは研究者の信頼を構築するための鍵となります。優れたVDPには以下の内容を明確に記載すべきです:テスト範囲(どのシステムがテスト範囲に含まれ、どのシステムが含まれないか)、許可されるテスト方法(SQLインジェクション/XSSテストは許可するがDDoS/ソーシャルエンジニアリング/実ユーザーデータへのアクセスは禁止するなど)、約束された対応時間(例:「3営業日以内に報告受領を確認します」)、脆弱性賞金の提供の有無、法的セーフハーバーの約束(ルールに従った善意の研究者を訴追しないことを明確にする)など。国際的には多くのVDPテンプレートが参考にでき、米国CISAもオープンソースのVDPテンプレートを提供しています。

セキュリティ連絡自体に加えて、security.txt にはいくつかの「驚きの」フィールドがあります。Acknowledgmentsフィールドはセキュリティ殿堂入り(Hall of Fame)を構築します——脆弱性を発見してくれた研究者を公に感謝することで、彼らの貢献を認め、コミュニティ構築の一助となります。Hiringフィールドは非常に賢い設計です:あなたのウェブサイトの脆弱性を発見できる人はそれ自体が優秀なセキュリティ人材であり、security.txtに採用リンクを配置することは最も精度の高いセキュリティ人材採用チャネルとなります。多くの企業がsecurity.txtを通じて優秀なセキュリティエンジニアを採用しています。Canonicalフィールドはセキュリティ上の考慮事項です——他のドメインで攻撃者があなたのsecurity.txtを偽造することを防止します。

よくあるスパムに関する懸念についてですが、実際にはsecurity.txtをすでに導入しているほとんどの組織から、スパムの増加は顕著ではないとのフィードバックが寄せられています。これは以下の理由によります:第一に、スパム送信者は通常security.txtをクロールしてメールアドレスを入手していないからです;第二に、mailtoメールを直接配置する代わりにhttps://フォームリンクを使用し、フォームに認証コードを追加することでボットを完全にブロックできるからです;第三に、専用のセキュリティメール(security@など)には通常厳格なスパムフィルターが設定されているからです。それに比べて、セキュリティ連絡チャネルがないために深刻な脆弱性報告を見逃すことの代償は、スパムのわずかな増加よりもはるかに大きくなります。

このジェネレーターは RFC 9116 標準に厳密に従って構築されており、すべての出力フォーマットは正規化されています:Contactフィールドはプレフィックスを自動的に認識し、Expiresフィールドは標準ISO 8601 UTC時間フォーマットを使用し、Preferred-Languagesは使用している言語に応じて自動的に設定されます。生成された内容はそのままコピーして /.well-known/security.txt パスにデプロイでき、修正は一切必要ありません。また、すべての設定はブラウザローカルで完了し、いかなるサーバーにも送信されません——あなたのセキュリティ連絡先情報は常にあなたのデバイス上にのみ保存されます。security.txtのデプロイに必要な時間はわずか5分ですが、それによって構築されるセキュリティコミュニケーションチャネルは、将来的に深刻なセキュリティインシデントを回避するのに役立つ可能性があります。

术语表

RFC 9116
IETFが発行したsecurity.txtの正式標準文書。番号9116、2022年4月発行。security.txtファイルのフォーマット、フィールド、デプロイパス、MIMEタイプなどすべての仕様の詳細が定義されており、セキュリティtxt導入の権威ある根拠となります。
.well-known ディレクトリ
RFC 8615で定義されたWeb標準ディレクトリ。ウェブサイトの標準化されたメタデータファイル(security.txt、robots.txt、apple-app-site-associationなど)を配置するためのもので、パスはウェブサイトのルートディレクトリ下の.well-knownフォルダに固定されています。
VDP(Vulnerability Disclosure Policy)
脆弱性開示ポリシー。ウェブサイトがどのようなセキュリティテストを許可するか、どのように脆弱性を報告するか、対応時間の約束、法的セーフハーバー条項などを記載します。security.txtのPolicyフィールドはVDPページにリンクすべきです。
PGP/GPG 暗号化
Pretty Good Privacy/GNU Privacy Guard。非対称暗号化標準の1つ。セキュリティ研究者がウェブサイトの公開鍵で脆弱性報告を暗号化し、ウェブサイトが秘密鍵を持つ人だけが復号できるようにすることで、送信中の脆弱性の詳細の傍受を防止します。
ISO 8601
国際標準化機構が定めた日時表記フォーマット。RFC 9116ではExpiresフィールドにこのフォーマットのUTC時間を使用することが要求されています(例:2027-12-31T23:59:59Z、ZはUTCタイムゾーンを示します)。
Hall of Fame(セキュリティ殿堂入り)
Acknowledgmentsフィールドが指す謝辞ページのこと。ウェブサイトにセキュリティ脆弱性を報告した研究者の名前/IDを公に記録し、セキュリティ研究への貢献を公的に承認するものです。
ホワイトハッカー(White Hat Hacker)
善意の目的でセキュリティ脆弱性を発見し責任を持って開示するセキュリティ研究者のこと。脆弱性を悪用して攻撃を行う悪意のあるハッカー(ブラックハット)と対比されます。security.txtはホワイトハット研究者に正式なコミュニケーションチャネルを提供するためのものです。
Canonical URL(正規URL)
security.txtのCanonicalフィールドは、ファイル自体の公式URLを宣言するためのものです。これにより、他のパスやドメインに攻撃者が偽造したsecurity.txtファイルを配置して研究者を欺くことを防止します。

RFC 9116 security.txt フィールド早見表

以下はsecurity.txt標準で定義されているすべてのフィールドとその要件です:

フィールド名必須/任意複数指定可?値フォーマット説明
Contact✅ 必須✅ 複数行可mailto:/https:/tel: URIセキュリティ連絡先。メール、Web URL、電話番号の3形式に対応
Expires✅ 必須❌ 1つのみISO 8601 UTC時間ファイル内容の有効期限。期限後は情報が失効している可能性があるとみなされる
Encryption⬜ 任意✅ 複数行可https:// URIPGP公開鍵の場所を示すURL。機密性の高い脆弱性報告を暗号化して送信するために使用
Acknowledgments⬜ 任意✅ 複数行可https:// URIセキュリティ殿堂入り/謝辞ページのURL。脆弱性報告者を公に感謝するためのもの
Policy⬜ 任意✅ 複数行可https:// URI脆弱性開示ポリシー(VDP)ページのURL。報告ルールと範囲を説明
Hiring⬜ 任意✅ 複数行可https:// URIセキュリティチームの採用ページURL。セキュリティ研究者に人材募集を告知
Canonical⬜ 任意✅ 複数行可https:// URIsecurity.txtファイル自体の正規URL。偽造を防止
Preferred-Languages⬜ 任意❌ 1つのみ言語コード(カンマ区切り)セキュリティチームが対応可能な言語。例:en, zh-CN, ja
CSAF⬜ 任意✅ 複数行可https:// URICommon Security Advisory Framework プロバイダーメタデータURL

よく使われるWebサーバーの security.txt 設定例

security.txtの内容を生成した後、サーバーで正しいアクセスパスとContent-Typeを設定してください:

Webサーバー設定ポイント注意事項
Nginxlocation = /.well-known/security.txt { default_type text/plain; alias /var/www/.well-known/security.txt; add_header Cache-Control "public, max-age=3600"; }完全一致(=)を使用し、default_typeをtext/plainに指定してNginxがtxtファイルをバイナリとして扱わないようにする
Apache.well-knownディレクトリが.htaccessのDenyルールでブロックされていないことを確認し、ファイルをウェブサイトのルートにある.well-knownフォルダに配置するだけApacheはデフォルトで.txtファイルにtext/plainを返しますが、mod_rewriteルールがこのパスを書き換えないことを確認してください
Caddyhandle_path /.well-known/security.txt { file_server { root /var/www } }CaddyはデフォルトでHTTPSを使用しtxtファイルのMIMEタイプを正しく処理するため、設定が最も簡単です
Cloudflare Pages/Vercel/Netlifysecurity.txtをpublic/.well-known/security.txtパスに配置し、デプロイ後に静的サービスから正しくアクセスできるようにする静的ホスティングプラットフォームは通常、正しいContent-Typeを自動的に処理します。.well-knownディレクトリがアンダースコアで始まる場合にプラットフォームが無視しないことを確認してください
CDN/リバースプロキシCDNまたはWAFがsecurity.txtをブロックしたり長期間キャッシュしたりしないようにする。Cache-Controlはmax-age=3600(1時間)に設定することを推奨security.txtを更新した後はCDNキャッシュを忘れずにフラッシュしてください。古いバージョンが研究者に表示される可能性があります

Privacy & Security

このジェネレーターのすべての設定操作は完全にブラウザローカルで行われます。入力したセキュリティ連絡先メールアドレス、PGP鍵URL、採用リンクなどのすべての情報はいかなるサーバーにも送信されず、収集または保存されることもありません。ページをリフレッシュまたは閉じると、すべての入力内容は直ちに消去されます。生成されたsecurity.txtファイルの内容はクリップボードとデプロイしたサーバー上にのみ存在し、GeekFormatはいかなるコピーも保持しません。

Troubleshooting

/.well-known/security.txt にアクセスすると404エラーが返される

一般的な原因は3つあります:第一に、ファイルが正しい場所に配置されていない——パスがウェブサイトのルートディレクトリにある.well-knownフォルダ内のsecurity.txtファイルであることを確認してください(.well-knownはドットで始まる隠しディレクトリであることに注意);第二に、Webサーバーの設定がドットで始まるディレクトリへのアクセスをブロックしている(Apacheの.htaccessやNginxのdenyルールがdotfileディレクトリをブロックしている可能性があります);第三に、Nginx/Apacheの書き換えルール(フロントエンドルーティングのhistoryモードなど)がリクエストをindex.htmlに転送している。解決方法:ファイルパスを確認し、サーバー設定で/.well-known/security.txtに明示的にlocationルールを追加してください。

security.txt にアクセスするとログインページまたはトップページにリダイレクトされる

多くのシングルページアプリケーション(SPA)や認証機能付きのウェブサイトは、一致しないすべてのパスをトップページまたはログインページにリダイレクトします。これにより自動ツールがsecurity.txtを見つけられなくなります。解決方法:サーバー設定で/.well-known/security.txtパスを例外として追加し、SPAルーティングや認証ミドルウェアを通さずにこのパスが直接ファイルの内容を返すようにしてください。これはsecurity.txtデプロイで最もよく見られる落とし穴です。

ブラウザでsecurity.txtにアクセスするとコンテンツが表示されずダウンロードされる

これはサーバーが返すContent-Typeが正しくないことが原因です。text/plainではなくapplication/octet-streamまたはその他のバイナリタイプに設定されている可能性があります。解決方法:Webサーバー設定でsecurity.txtのContent-Typeを明示的にtext/plain; charset=utf-8に設定してください。Nginxではdefault_type text/plainまたはadd_header Content-Type text/plainを使用する必要があります;Apacheは通常自動的に処理しますが、問題がある場合はAddTypeディレクティブで強制的に指定できます。

Contact フィールドにメールアドレスを入力したのにフォーマットエラーが表示される

Contactフィールドの値にはURIプレフィックスが必要です:メールアドレスはmailto:で始まる必要があり(例:mailto:security@example.com、security@example.comと直接書いてはいけません)、WebページURLはhttps://で始まる必要があり(example.com/securityだけを書いてはいけません)、電話番号はtel:で始まる必要があります。これはRFC 9116標準で明確に要求されています——Contactフィールドは複数の連絡先形式をサポートしているため、プレフィックスがないとパーサーがタイプを判別できなくなります。

Expires の時間フォーマットが正しくないと表示される

ExpiresはISO 8601形式のUTC時間を使用する必要があり、フォーマットはYYYY-MM-DDTHH:MM:SSZで、末尾にはUTCタイムゾーンを示すZが必要です(+08:00などのローカルタイムゾーンオフセットは記述できません)。正しい例:2027-12-31T23:59:59Z。2027/12/31、Dec 31 2027、2027-12-31 23:59:59などの他のフォーマットは使用しないでください——これらは標準に準拠していません。

security.txtを配置したのにオンライン検出ツールが見つからないと言う

以下の点を確認してください:第一に、HTTPSでアクセスしていること(HTTPアクセスは無効です。RFCではHTTPSが必須とされています);第二に、wwwありとwwwなしの両方のドメインで正しくアクセスできること(ウェブサイトが両方のドメインバージョンで存在する場合は、Canonicalフィールドでメインドメインを宣言し、両方のドメインにsecurity.txtを配置するか正しい301リダイレクトを設定することを推奨します);第三に、CDNキャッシュから古いコンテンツが消去されていること;第四に、サーバーがsecurity.txtパスで他のURLへのリダイレクト(301/302)を返していないこと——RFCではリダイレクトはツールによって拒否される可能性があると規定されています。