動的アクセスキー
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Outline には、静的と動的の 2 種類のアクセスキーが用意されています。静的キーでは、キー自体にすべての接続情報がエンコードされますが、動的キーでは、接続情報の場所がエンコードされるため、この情報をリモートに保存し、必要に応じて変更できます。つまり、サーバーの構成を更新するたびに新しいキーを生成してユーザーに配布しなくても済みます。このドキュメントでは、動的アクセスキーを使用して Outline サーバーの配置を柔軟に、かつ効率的に行う方法を示します。
動的アクセスキーで使用されるアクセス情報は、次の 3 つの形式で指定できます。
ss://
リンクを使用する
Outline クライアント v1.8.1 以降。
既存の ss://
リンクを直接使用できます。この方法は、サーバー、ポート、または暗号化方式を頻繁に変更する必要はないが、サーバー アドレスを柔軟に更新する必要がある場合に最適です。
例:
ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpleGFtcGxl@outline-server.example.com:8388/?outline=1
JSON オブジェクトを使用する
Outline クライアント v1.8.0 以降。
この方法では、ユーザーの Outline 接続のすべての面を柔軟に管理できます。サーバー、ポート、パスワード、暗号化方式をこの方法で更新できます。
例:
{
"server": "outline-server.example.com",
"server_port": 8388,
"password": "example",
"method": "chacha20-ietf-poly1305"
}
- server: VPN サーバーのドメインまたは IP アドレス。
- server_port: VPN サーバーが実行されているポート番号。
- password: VPN との接続に必要なパスワード。
- method: VPN で使用される暗号化方式。Shadowsocks でサポートされる AEAD 暗号方式をご覧ください。
YAML オブジェクトを使用する
Outline クライアント v1.15.0 以降。
この方法は、前述の JSON 方式と似ていますが、Outline の高度な構成形式を利用してさらに柔軟性が強化されています。サーバー、ポート、パスワード、暗号化方式などを更新できます。
例:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint: outline-server.example.com:8388
cipher: chacha20-ietf-poly1305
secret: example
udp:
$type: shadowsocks
endpoint: outline-server.example.com:8388
cipher: chacha20-ietf-poly1305
secret: example
- transport: 使用するトランスポート プロトコルを定義します(この場合は TCP と UDP)。
- tcp/udp: 各プロトコルの構成を指定します。
- $type: 構成のタイプを指定します(ここでは shadowsocks)。
- endpoint: VPN サーバーのドメインまたは IP アドレスとポート。
- secret: VPN との接続に必要なパスワード。
- cipher: VPN で使用される暗号化方式。Shadowsocks でサポートされる AEAD 暗号方式をご覧ください。
トランスポート、エンドポイント、ダイヤラー、パケット リスナーなど、Outline サーバーへのアクセスを構成できるすべての方法の詳細については、アクセスキーの構成をご覧ください。
既存の静的アクセスキーがある場合は、JSON または YAML ベースの動的アクセスキーを作成するのに必要な情報を抽出できます。静的アクセスキーは、次のパターンに従います。
SS-URI = "ss://" userinfo "@" hostname ":" port [ "/" ] [ "#" tag ]
userinfo = websafe-base64-encode-utf8(method ":" password)
method ":" password
例:
ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpleGFtcGxl@outline-server.example.com:8388/?outline=1
動的アクセスキーの作成方法について理解できたら、アクセスキーの構成に適したホスティング プラットフォームを選択することが重要になります。この決定を行う場合は、プラットフォームの信頼性、セキュリティ、使いやすさ、検閲耐性などの要因を考慮してください。プラットフォームでは、ダウンタイムなしでアクセスキー情報を安定した方法で処理できますか?構成を保護するのに適したセキュリティ対策は用意されていますか?プラットフォームでアクセスキーの情報を管理するのはどれくらい簡単ですか?インターネットの検閲が行われている地域からプラットフォームにアクセスできますか?
情報へのアクセスが制限されている可能性がある場合は、Google ドライブ、pad.riseup.net、Amazon S3(パススタイルのアクセス)、Netlify、GitHub Secret Gist など、検閲耐性のあるプラットフォームにホストすることを検討してください。デプロイに対する具体的なニーズを評価し、アクセシビリティとセキュリティの要件に合ったプラットフォームを選択します。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-03-11 UTC。
[null,null,["最終更新日 2025-03-11 UTC。"],[[["\u003cp\u003eThe Outline Client now supports Dynamic Access Keys, allowing for real-time updates to VPN access information without reissuing keys.\u003c/p\u003e\n"],["\u003cp\u003eDynamic Access Keys can host access information as either an \u003ccode\u003ess://\u003c/code\u003e link, simplifying setup for those needing only server switching, or as a JSON object to enable changes to server, port, password, and encryption method.\u003c/p\u003e\n"],["\u003cp\u003eGoogle Sheets, Riseup pad, S3, and Netlify are presented as censorship-resistant options for storing dynamic access information, with clear instructions on how to configure each for use with \u003ccode\u003essconf://\u003c/code\u003e protocol.\u003c/p\u003e\n"],["\u003cp\u003eExisting static access keys can be used to derive the necessary information (server, port, password, method) for creating a JSON-based dynamic key, which is done by decoding the base64 password, then filling in each of the relevant fields.\u003c/p\u003e\n"],["\u003cp\u003eCustom error messages can be sent to users via Dynamic Access Keys by adding an "error" key to the JSON object, allowing for tailored feedback in case of connection failures.\u003c/p\u003e\n"]]],["The Outline Client supports Dynamic Access Keys, allowing VPN information to be hosted remotely and updated dynamically. This enables changing the VPN's location, port, password, and encryption method without re-issuing keys. Access information can be stored as an `ss://` link or a JSON object containing the server, server_port, password, and method. Censorship-resistant options like Google Sheets, pad.riseup.net, S3, and Netlify are suggested for hosting. Dynamic access keys are created by replacing `https://` with `ssconf://` in the access information URL, the user can also include an error message for their end user.\n"],null,["# Dynamic Access Keys\n\nOutline offers two types of access keys: static and dynamic. Static keys encode\nall the connection information within the key itself, while dynamic keys encode\nthe location of the connection information, allowing you to store that\ninformation remotely and change it if needed. This means you can update your\nserver configuration without having to generate and distribute new keys to your\nusers. This document explains how to use dynamic access keys for more flexible\nand efficient management of your Outline server.\n\nThere are three formats to specify the access information that will be used by\nyour dynamic access keys:\n\n### Use an `ss://` Link\n\n*Outline Client v1.8.1+.*\n\nYou can directly use an existing `ss://` link. This method is ideal if you don't\nneed to frequently change the server, port, or encryption method, but still want\nthe flexibility to update the server address.\n\n**Example:** \n\n ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpleGFtcGxl@outline-server.example.com:8388/?outline=1\n\n### Use a JSON object\n\n*Outline Client v1.8.0+.*\n\nThis method offers more flexibility for managing all aspects of your users'\nOutline connection. You can update the server, port, password, and encryption\nmethod this way.\n\n**Example:** \n\n {\n \"server\": \"outline-server.example.com\",\n \"server_port\": 8388,\n \"password\": \"example\",\n \"method\": \"chacha20-ietf-poly1305\"\n }\n\n- **server:** The domain or IP address of your VPN server.\n- **server_port:** The port number your VPN server is running on.\n- **password:** The password required to connect to the VPN.\n- **method:** The encryption method used by the VPN. Refer to the Shadowsocks supported [AEAD ciphers](https://shadowsocks.org/doc/aead.html)\n\n### Use a YAML Object\n\n*Outline Client v1.15.0+.*\n\nThis method is similar to the previous JSON method but adds even more\nflexibility by leveraging Outline's advanced configuration format. You can\nupdate the server, port, password, encryption method, and much more.\n\n**Example:** \n\n transport:\n $type: tcpudp\n tcp:\n $type: shadowsocks\n endpoint: outline-server.example.com:8388\n cipher: chacha20-ietf-poly1305\n secret: example\n udp:\n $type: shadowsocks\n endpoint: outline-server.example.com:8388\n cipher: chacha20-ietf-poly1305\n secret: example\n\n- **transport:** Defines the transport protocols to be used (TCP and UDP in this case).\n- **tcp/udp:** Specifies the configuration for each protocol.\n - **$type:** Indicates the type of configuration, here it's shadowsocks.\n - **endpoint:** The domain or IP address and port of your VPN server.\n - **secret:** The password required to connect to the VPN.\n - **cipher:** The encryption method used by the VPN. Refer to the Shadowsocks supported [AEAD\n ciphers](https://shadowsocks.org/doc/aead.html).\n\nSee [Access Key Configuration](/outline/docs/guides/service-providers/config) for details on all the ways you can\nconfigure access to your Outline server, including transports, endpoints,\ndialers, and packet listeners.\n\nExtract Access Information from a Static Key\n--------------------------------------------\n\nIf you have an existing static access key, you can extract the information to\ncreate a JSON- or YAML-based dynamic access key. Static access keys follow the\nfollowing pattern: \n\n SS-URI = \"ss://\" userinfo \"@\" hostname \":\" port [ \"/\" ] [ \"#\" tag ]\n userinfo = websafe-base64-encode-utf8(method \":\" password)\n method \":\" password\n\nExample: \n\n ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpleGFtcGxl@outline-server.example.com:8388/?outline=1\n\n- **Server:** `outline-server.example.com`\n- **Server Port:** `8388`\n- **User Info:** `Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpleGFtcGxl` Decoded as\n [base64](https://en.wikipedia.org/wiki/Base64) using a tool like the [Google\n Admin Toolbox\n Encode/Decode](https://toolbox.googleapps.com/apps/encode_decode/)\n\n - **Method** : `chacha20-ietf-poly1305`\n - **Password** : `example`\n\nChoose a Hosting Platform\n-------------------------\n\nNow that you understand how to create dynamic access keys, it's important to\nchoose a suitable hosting platform for your access key configuration. When\nmaking this decision, consider factors like the platform's reliability,\nsecurity, ease of use, and censorship resistance. Will the platform consistently\nserve your access key information without downtime? Does it offer appropriate\nsecurity measures to protect your configuration? How easy is it to manage your\naccess key information on the platform? Is the platform accessible in regions\nwith internet censorship?\n\nFor situations where access to information might be restricted, consider hosting\non censorship-resistant platforms like [Google Drive](https://drive.google.com),\n[pad.riseup.net](https://pad.riseup.net/), [Amazon\nS3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)\n(with path-style access),\n[Netlify](https://dev.to/alexmercedcoder/delivering-json-data-with-netlify-1j96),\nor [GitHub secret\ngists](https://docs.github.com/en/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists).\nEvaluate the specific needs of your deployment and choose a platform that aligns\nwith your requirements for accessibility and security."]]