Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ActivityPubでリモートのオブジェクトをGETするときのリクエストをHTTP Signatureで署名するオプション #6731

Merged
merged 2 commits into from
Oct 17, 2020

Conversation

mei23
Copy link
Contributor

@mei23 mei23 commented Oct 17, 2020

Summary

Resolve #6727
ActivityPubでリモートのオブジェクトをGETするときのリクエストをHTTP Signatureで署名するオプション追加。
default.ymlにsignToActivityPubGet: true, (default: false)

このオプションを有効にすると、
Mastodon v3.x の以下のオプションなどで署名を強制しているサーバーからオブジェクトを取得できるようになります。

https://docs.joinmastodon.org/admin/config/#basic

AUTHORIZED_FETCH

ただし、このオプションを有効にするデメリットは

  • 署名を付けるコストが少し増える
  • Mastodonは (署名を強制しているサーバーでなくても) 常に署名の検証はしているようなので、Mastodonからの応答は (nginx等でキャッシュされてない限り) 少し遅くなると思われる。
  • Mastodon v3.1.0 未満には (署名を強制しているサーバーでなくても) GETに署名が付いている&取得元に疎通ができない 場合に500になる問題があるので、リモートから疎通できない環境にあるインスタンスは常に Mastodon v3.1.0 未満からオブジェクトを取得できなくなる。

がある割に、このオプションが必要なMastodonサーバーがほぼないと思われるためデフォルトでは有効にしてません。

実装メモ

  • 署名はinstance.actorという名前のシステムユーザーを作成して行います
  • HTTP SignatureのライブラリはNode.jsのhttpsのClientRequestを変更する必要がありますが、GETでNode.jsのhttpsを使用するとRedirectもContent-Encodingのサポートなどもなくなってしまうので、ClientRequestが触れるライブラリ got を使用しています。

また、以下のバグを潰さないと動かないので雑に修正しています

@syuilo
Copy link
Member

syuilo commented Oct 17, 2020

詳細な説明あざます!今から見ます

がある割に、このオプションが必要なMastodonサーバーがほぼないと思われるためデフォルトでは有効にしてません。

👍

v12.48.0 で「連合に照会中」ダイアログ周りがバグってうまく動かないので一旦削除

あー、ここ見落としてました。後で直しておきます💪

@@ -5,6 +5,7 @@ import fetch, { HeadersInit } from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
import { HttpsProxyAgent } from 'https-proxy-agent';
import config from '../config';
import { URL } from 'url';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

diff見る限りこのimportは不要そうだけど意図している?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

なぜかおこられる
image

@syuilo syuilo merged commit 85a0f69 into misskey-dev:develop Oct 17, 2020
@syuilo
Copy link
Member

syuilo commented Oct 17, 2020

👍👍👍

@mei23 mei23 deleted the mei-v12-signed-ap-get branch April 10, 2021 12:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cannot reply mastodon instance Remote boost from Mastodon throws error "acct is not an user"
2 participants