-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
テスト環境で(httpsではない)httpで公開されているサーバー同士でもActivityPub通信がしたい #10716
Comments
production以外ではhttpでリクエストする?
production以外ではhttpも許可する? |
その辺考えるのだるいので証明書検証無効化(もしくはちゃんとmitmのCA読ませる or 適当にワイルドカードの証明書をLEとかで取って使う) + mitmproxy の forward proxy モードあたりで誤魔化したほうがよさそう (ついでにサーバー間通信が見れてお得) |
プロキシをセットアップするのはテストに組み込みたい時に面倒そう (サーバー間通信はFastifyみたいにdevelopment時に電文をログさせればよさそう) |
CA証明書を読ませて〜とかすると(また)Misskeyをスタンドアロンでhttps待受する機能を復活させないとならず面倒 で、node-fetchでhttps通信できてもブラウザからのアクセスはMisskey自体の待受がhttpsにできない(config.urlをhttps:// にできない)ためhttpで通信できるようにするのが面倒臭くなさそう |
|
node-fetchでHTTPS通信できる状態ならブラウザでも証明書エラー無視すれば見られるのでは? |
これ用に実際のホスト認証部分を変えちゃうのはあんま好ましくない気がする テスト環境なのであれば |
ブラウザの設定変えたらいけた
証明書検証を何らかの拍子にオフにできるほうがまずいのでは |
あー
これはわかる |
docker的解決策とかあるかしら |
手動開発の事はとりあえず考えないとすると、自動テストであれば本体側にそういうのは含めず (少なくとも https.Agent を生成する関数をmockできるように分離くらい?)していい感じにmockなりすればよさそう …というか普通に NODE_TLS_REJECT_UNAUTHORIZED=0 で行けたりしませんか? |
考えたい |
NODE_TLS_REJECT_UNAUTHORIZEDはそもそもnodeの機能なので(mitmしてる社内ネットワークでは仕方なく使わざるを得ない場合もある)そこは大丈夫ではと思ってる dockerにもあの環境変数で動くはず、ブラウザにもセルフサインCAで対応したほうがいいかと |
httpでさほど問題があるように見えないのでhttp使う方針で行きたい |
よくよく考えるとprd以外でhttp許容するといざprdに載せた時うっかりhttpのURL書いててダメでしたということが起こりうるので無闇にprdかどうかで挙動変えるのはやめた方がいい、というかNODE_TLS_REJECT_UNAUTHORIZED=0じゃだめだったんですか |
NODE_TLS_REJECT_UNAUTHORIZED=0でダメだったとしてもこれでできるように修正したほうがいいと思います PROD環境にDEVビルドを間違ってデプロイしちゃった際に他のAPインスタンスに変なリクエストを飛ばしまくるなどリスクがないとは言えないかも
|
WebFingerってhttps必須なのか |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
mitmproxyとかいうのを使えばいいのかしら(ミリしらだけど) |
This comment was marked as outdated.
This comment was marked as outdated.
できた試しはなかった |
NODE_TLS_REJECT_UNAUTHORIZED=0でd22@localhost:3001を照会した結果
|
httpsにhttp/2が必須なのはFastifyの仕様(そのせいでWebSocketは出来なさそう?) |
This comment was marked as off-topic.
This comment was marked as off-topic.
https://tex2e.github.io/rfc-translater/html/rfc8441.html でhttp2でのWebSocketブートストラップは定義されており、Node.jsは一応できるっぽい nodejs/node#23284 が https://github.com/theturtle32/WebSocket-Node で使えるかはわからない wsでもまだ実装されていない模様 websockets/ws#1458 |
実在ドメインに A レコードで 127.0.0.1 に向ければ Let's Encrypt とかから発行された証明書で接続できるけどそれじゃダメ? |
それそもそもちゃんとSSLしゃべれてないのでは (self-signed でコケる時は
CIの自動テストにvalidな証明書持たせるのは非常に面倒…というのと証明書無視はなんか手元で試した限りでは行けそうなのでそこは問題ではない FastifyがHTTP2強制+WSがHTTP2でうまくいかんというのは
で行けたりしませんか |
そらしゃべらせる手続きを何もしてないし…
私はアイデアを持っていない |
普通に https://gist.github.com/u1-liquid/bc4677830c1ed5fd4f654012b9810d36 |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
一応挙動について書いておくと
関係とは…? |
traefikを挟んだら検証は置いておいてhttpsで喋れるようになったねという話を言いたかった() |
なんか適当にこういうノリで const tls = require("node:tls")
const net = require("net")
const fs = require("node:fs")
const server = tls.createServer({
cert: fs.readFileSync("./cert.pem"),
key: fs.readFileSync("./key.pem"),
}, socket => {
const dest = net.createConnection({
host: "127.0.0.1",
port: "80",
})
socket.pipe(dest)
dest.pipe(socket)
})
server.listen(443) 証明書は適当にこんな感じで
|
素朴な疑問なんだけどどういうモチベーションでhttpで連合したいのかよくわからない |
Lines 18 to 28 in 52a1d96
👀 |
|
#10716 (comment) |
(httpsが面倒な場面で避難的に使えてもいいかなと思ったがあんまりないか) |
traefik持ってくるのはちょっと面倒かもしれないがまあ GH Actions で使うだけならそれでもいいかも |
(nginxにopensslで作ったself signed certificateつけてあげるなどよりずっとマシでもある) |
hostsファイルいじったりブラウザの設定をいじったりdockerを導入したりするのが面倒(などと発言しており) |
|
あ〜いける |
(そういえば証明書は一度作ったら使いまわして問題ないわね) |
(なんかでもそこで一手間加えてhttpsでテストしたいことってある?とまだ思っている) |
This comment was marked as outdated.
This comment was marked as outdated.
そこだけ出されても何でコケてるかわからない… |
ログ見たら普通に設定ミスだった(それはそう)docker使わない環境にするかhost ネットワーク使うと解決しそう
|
localhost にするとなぜか https://gist.github.com/u1-liquid/b15a3d97bf09dc8b4c813d7e23f038ea ちなみにサーバー立ち上げに使ったコマンド traefik --configFile=./.config/traefik.yaml
cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 MISSKEY_CONFIG_YML=alice.yml pnpm run migrateandstart
cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 MISSKEY_CONFIG_YML=bob.yml pnpm run migrateandstart |
misskey/packages/backend/src/core/WebfingerService.ts
Line 46 in 2aa75f5
The text was updated successfully, but these errors were encountered: