Secret Service を使う対話的なデスクトップセッションでは、プロキシの秘密を識別属性とは別に保存します:

secret-tool store --label='Work web proxy' purpose web-proxy host proxy.example

秘密は別に渡し、ラベルや属性には入れないでください。取得するには secret-tool lookup purpose web-proxy host proxy.example を使います。このコマンドは一致した秘密を標準出力に返すので、その出力は共有の診断ログではなく、対象クライアントが対応する資格情報インターフェースへ渡します。

検索には該当ユーザーの D-Bus セッションと利用可能な Secret Service が必要です。コレクションのロック解除が必要な場合があります。cron ジョブはデスクトップのロック解除状態を自動的に再現せず、root の検索は別ユーザーのキーリングを選びません。

ストレージ検索の失敗は、プロキシ認証の拒否とは別に扱ってください。空のパスワードを黙って送って再試行すると、どちらの操作が失敗したのか分からなくなります。

対応している場合は、クライアントの資格情報フィールドを分けて使ってください。資格情報をプロキシ URL に入れなければならない場合は、ユーザー名とパスワードを URI コンポーネントとしてエンコードしてください。シェルのクォートは URL エンコードを行いません。

キーリングがあれば .profile に生の秘密を書く必要はありません。ただし取得した値は依然としてメモリ上にあり、エクスポートすれば継承する子プロセスに晒されます。保護された保存領域は、その実行環境を秘密の保管庫にはしません。

関連記事