KeePassXCがサンドボックスされている場合フラットパックに、ブラウザは次の場合にのみアクセスできます。いいえサンドボックス方式、つまりdeb / rpmパッケージまたは同様のパッケージでホストにインストールされます。ブラウザをサンドボックスします。FirefoxブラウザそしてKeePassXC - または少なくともセキュリティ上の理由から、実際に希望のブラウザとKeePassXCをデフォルトでインストールすることは不可能です。
簡単に言うと:
- これはすぐに機能します:Firefox(ホストインストール)、KeePassXC(フラットハブのflatpak)
- これは以下ではありません:Firefox(サンドボックス)、KeePassXC(ホストまたはサンドボックス、重要ではありません)
それでは、これらのコミュニケーションがどのように行われるのでしょうか。
答え1
背景
解決策が必要な場合は、この部分をスキップできます。しかし、気になる方のために私たちが直面した問題を説明します。
$XDG_RUNTIME_DIR/kpxc_server
KeePassXCは、アプリケーションがリッスンするUNIXソケットも作成します。keepassxc-proxy
スタート – 合格ローカルメッセージング–ブラウザ経由(プラグイン[email protected]
、つまりKeePassXC-Browserによってトリガーされます)そのソケットからメッセージを受信しようとします。- Firefoxがサンドボックス化されていない場合、エージェントは正常に起動できます。やるべき唯一のことは、KeePassXC flatpakに入ることです。
- フラットハブ KeePassXCパッチがありますkeepassxc-proxy を以下から開始できるようにします。つまり、
flatpak run
Firefoxを実行できます。 - これがホストにインストールされているFirefoxがこれまで機能している理由です。
- 今FlatpakでインストールするとFirefoxが機能しない理由:非常に良い公式MozillaのFirefox Flatpakブラウザとして実際には何の権限もありません。たとえば、ファイルシステムへの一般的なアクセス権はありません。Webポータル)。とにかく、何をしても、できないことが1つあります。ホストまたは他のflatpakでプロセスを作成する。
したがって、ラッパースクリプトを作成してこの問題を解決できます。flatpak-spawnを使うFirefoxにサンドボックスから脱出させてください。しかし、Firefoxサンドボックスがどれほど美しく安全に構築されているかを見ると、そのような機能のセキュリティを妥協することはできません。結局のところ、セキュリティの観点からは、ホストコンピュータにFirefoxを再インストールできます。良いニュースが来ています:このソリューションは、すべてのサンドボックスとセキュリティの側面を維持します!
しかし、Firefoxがプロキシを実行する必要がある問題を解決しましたが、まだ多くがあります。スポイラー警告、私たちが解決しなければならない重要な点は次のとおりです。
- Firefoxでkeepassxc-proxyを実行する(解決策:Firefoxサンドボックスで実行)
- Firefox が KeePassXC のソケットにアクセスできるようにします。注:この手順では、既にバリアントであるFirefox(サンドボックス)、KeePassXC(ホストインストール)を実行できます。
- KeePassXC flatpakのUNUXソケットをFlatpak以外のアプリケーションに公開します。 (解決策:シンボリックリンク)
現在の解決策
v1.2
テスト環境:Fedora 32、org.mozilla.firefox
flathubのv75、org.keepassxc.KeePassXC
flathubのv2.5.4
Firefoxでkeepassxc-proxyを実行する
- まず、最も悪いことは、
keepassxc-proxy
Firefox flatpak内で実行したいので、バイナリが必要なことです。私たちには良いです。依存関係が多くなく、スタンドアロンアプリケーションとして機能します。- だから私は選んだRustプロキシアプリケーション(なぜそれではいけないのでしょうか?
答え2
ルークの答え正しい道を行っていましたが、変えなければなりませんでした。問題Ubuntu 22.04でkeepassxc 2.7.1を使用するには:
- このリポジトリは廃止されました。https://github.com/varjolintu/keepassxc-proxy-rust代わりに
- ホストとflatpakで利用可能なlibcの間に矛盾があるため、静的にリンクされたバイナリを作成する必要があります。
- Flatpakの観点からは、.jsonファイルのパスは絶対パスでなければなりません。
- ソケット名の変更により、flatpak overrideコマンドを調整する必要があります。
私を見てブログ投稿詳細な指示を受けてください。
答え3
@decocijoと@rugkの答えに触発され、Chromeベースのブラウザ(Vivaldi)の作業例があり、Firefoxへのより直接的なアプローチも提供します。
git clone https://github.com/varjolintu/keepassxc-proxy-rust
cd keepassxc-proxy-rust
# compile
# add deps if needed
sudo dnf install gcc rustup
rustup-init
rustup target add x86_64-unknown-linux-musl
RUSTFLAGS='-C link-arg=-s' cargo build --release --target x86_64-unknown-linux-musl
cp target/x86_64-unknown-linux-musl/release/keepassxc-proxy ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts/
# modify flatpaks
sudo flatpak override --filesystem=xdg-run/app/org.keepassxc.KeePassXC:ro com.vivaldi.Vivaldi
sudo flatpak override --filesystem=xdg-run/org.keepassxc.KeePassXC:ro com.vivaldi.Vivaldi
sudo flatpak override --filesystem=/var/home/m8/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts org.keepassxc.KeePassXC
# modify keepassxc browser path
In the KeePassXC UI.
- Tools
- Settings
- Browser Integration
- General
- Enable Browser Integration
- Tick Vivaldi
- Advanced
- Use a custom location
- Chromium
- ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts