タイトル通りだが、躓くポイントがあったので備忘録としてまとめておく。
Mailvelopeについて
MailvelopeはWebメールのトラフィックをOpenPGPによりエンドツーエンド暗号化するオープンソース ソフトウェアで、ブラウザのアドオン(拡張機能)として動作する。公式サイトによればブラウザはChrome、Edge、Firefoxがサポートされており*1、WebメールサービスはGmail、Yahoo、Outlook.com等に対応している。こうしたWebメールサービスは便利な反面、サービスプロバイダーによって情報収集される可能性が否定できず、メールがどのくらい安全かが不明瞭である。Mailvelopeを用いたエンドツーエンド暗号化によってWebメールの安全性を高めることができる。
準備するもの
- Mac(mac OS Ventura 13.4.1 (c))Homebrewがインストールされているものとする
- 以前紹介したような手順で秘密鍵を保存したYubiKey
WebブラウザはVivaldiを使用した。
Mailvelopeの導入
Chrome ウェブストアからMailvelopeを検索し、インストールする。
GnuPGのインストール
gpgmeとGnuPGをインストールする必要がある。Homebrewがインストールされていれば、ターミナルでbrew install gpgme
と入力しgpgmeをインストールする。もしGnuPGがインストールされていなければ、同時にGnuPGもインストールされる。
pinentry-macのインストール
pinentryは、ダイアログ表示を介して接続すべきスマートカードのシリアル番号を示したり、PIN等の値を対話的に取得したりするためのプログラムである。

gpgmeをインストールするとpinentry
がインストールされるが、pinentry
ではターミナル内で動作するのみで、Mailvelopeでは動作しないため、pinentry-mac
をインストールする必要がある。brew install pinentry-mac
でインストールできる。
gpg-agent.conf
ファイルを以下の内容で作成し、~/.gnupg
に保存する。
pinentry-program /opt/homebrew/bin/pinentry-mac
GPGToolsが開発するGPG Suite(WindowsにおけるGpg4winに相当するものと考えてよい)というものもあり、これをインストールすると、pinentry-macも同時にインストールされるが、検証環境ではダイアログが表示されるものの、正しく動作しなかった(今回の用途においてはGPG Suiteをインストールする必要はない)。
マニフェストファイルの作成と配置
Mailvelopeがgpgmeと正常に通信するためには、ブラウザアプリケーションのマニフェストファイルが必要である。このファイルには、ネイティブメッセージングアプリgpgme-json
へのパスと、許可されたブラウザ拡張機能 ID が含まれる。Apple SiliconなMacにおいては、マニフェストファイルgpgmejson.json
を以下の内容で作成する。
{ "name": "gpgmejson", "description": "Integration with GnuPG", "path": "/opt/homebrew/bin/gpgme-json", "type": "stdio", "allowed_origins": [ "chrome-extension://kajibbejlbohfaggdiogboambcijhkke/" ] }
今回はVivaldiに設定するので、作成したファイルをディレクトリ~/Library/Application Support/Vivaldi/NativeMessagingHosts
に保存する。ここまでの手順を行うことでMailvelopeがGnuPGと連携するので、Outlook.comで正しく動作するか確認を行う。

結語
Apple SiliconなMacのVivaldiにMailvelopeをインストールし、YubiKeyを用いて暗号化、署名、検証、復号できた。
参考にしたサイト
*1:今回Vivaldiで検証できたので、Chromium系のブラウザでは動作可能なのかもしれない。