コミュニティー製の Firefox 派生ブラウザーにデジタル署名を付けた話

コミュニティー製の Firefox 派生ブラウザーにデジタル署名を付けた話

Floorp ブラウザーを開発しているすらーぷの妖精です!バージョン 10.4.0 で Certum によるコードサイニング証明書を購入し、署名しました。手順が大変だったので備忘録として残そうと思います。

なぜコードサイニング証明書を買って署名したのか

Kaspersky・Avast・OSばs(((おっと、、 ウイルスバスター・Norton といったセキュリティソフトが信頼できないソフトウェアとして Floorp をブロックするので署名をつければ解決できるという話を聞き、コードサイニング証明書を買い、個人情報を全国に捧げる決断をしました。


購入・コードサイニング証明書発行手順

オープンソース開発者向けコードサイニング証明書 - Crystal Dew World [ja]

【2022/08/28追記】コマンドラインオプション例修正 タイムスタンプサーバ…
crystalmark.info

必要なものは上の hiyohiyo 様が書いているブログの通り、以下のものになります

  • パスポートなどの国際的に自身の身分を公的に証明できるもの
  • ゆうちょ銀行の残高証明書などの英語で住所が確認できる書類(通常は日本語なので発行の際に英語で書いてくださいとお願いするべし)
  • オープンソースプロジェクト(GitHub などの URL でさらに、自分の名前を載せたライセンスを書いておく)
  • 本名および居住地域(都道府県)を公開する覚悟
  • 約2万3000円費用(2年目からは25ユーロに下がります)

購入手順

下記のサイトから一番下の行の商品がオープンソースプロジェクト下で開発している人が使えるコードサイニング証明書と必要なキット。

クラウドでやりたいなら一番左を。(二年目も49ユーロになります。)
物理キーでいいなら一番右側を。(二年目からは25ユーロに)

Code signing - Certum Shop

Code signing certificate is used for pro…
shop.certum.eu

私は物理キーでやりたかったのと安く済ませたかったので一番右を選択。Open Source Code Signing – set

値段に関しててですが円安なので無茶苦茶高いです。DHL を配送サービスに使うらしくその値段も含んで2万円ぐらいです。(日本の関税に引っ掛かりその手数料と税金で1100円追加で領収されます)

まあ無料のオープンソースプロジェクトで収益が得られていない場合はあきらめたほうが賢明だと思います。ちなみに Floorp はブラウザーからの収益は0円なので終わっています。絶望的です。寄付は以下からお願いします。

Sponsor @Ablaze-MIRAI on GitHub Sponsors · GitHub

GitHub is where people build software. M…
github.com

コードサイニング証明書を Certum に発行してもらう

日本語のドキュメントがないので軽く書いておきます。ちなみにコードサイニング証明書を使うのに必要なDHL経由で来るツールが発行には必要です。Windows 環境が前提です

1.Certum のコードサイニング証明書を購入したアカウントでログインしてアカウント管理画面へ

2.Manage Certificates ↗ にアクセスする

証明書の管理サイトにリダイレクトします。ここで Certum の DHL経由で来るツールが必要になります。先にセットアップが必要です。

USB メモリみたいなものを取り出して裏側が取れるので取って付属の SIM カードを入れます(緑色のカードです)入れ終わったら蓋をしましょう。

PC に刺します。そして、以下のサイトからカードマネージャをダウンロードしてインストールします。(再起動必須)

再起動し終わったら、インストールしたソフトを起動します。インターフェイスは結構古めです。

「Read Card」をクリックしてロードします。

「Common Profile」を開きます。

PIN・PUK を入れておきます。また忘れたらおしまいなのでメモは絶対取りましょう。(再発行めんどい)

これでセットアップは終わりです。

3. Java のインストールと秘密鍵のインポート

Java の Runtime を使用したネイティブソフトウェアとウェブサイトの通信が必要になります。というわけで以下から Java を入れておきます。

Activate Certificates から自身の証明書のパネルを選択してアクティベートします。ここでは手順は割愛します。

Certum の Java を使用した Agent が途中で出てきますのでその時に Java が使われます。また、先ほど設定した PIN が必要になります。

4.個人情報の入力と本人確認

3. の手順は個人情報を入力していろいろやると完了です。また住所は「ゆうちょ銀行の残高証明書などの英語で住所が確認できる書類」と同じ表記にするとスムーズです。

この手順が完了すると Certum からメールが送られてきます。本人確認についてです。2つの手順が必要です。

1.海外のウェブサイトでスマホなどを用いて本人とパスポートを一緒にライブ撮影して提出

2.パスポートのコピーと「ゆうちょ銀行の残高証明書などの英語で住所が確認できる書類」をパスワードで保護された zip でをメールに添付して送信する

1は簡単です。送られてきたリンクをクリックして英語で書かれている手順の通り自撮り撮影するのみです。

2は結構手間です。指定されたメールアドレスにオーダーナンバーと一緒に送信します。パスワードの送信は国際電話で行います。電話番号はなぜか意図的に隠されていたので書きません。

英語かポーランド語を選べます。どちらかを決めて電話します。私はポーランド語なんて話せないので英語にしました。

1分ほどでつながりました。最初に何をしたいか聞かれます。英語なんてさぼっているので以下の文章しかわかりません。

I received an email from your support yesterday. It said to email them a password protected zip, which I already did. I am here to give you that password.

何をしに来たのか理解してくれたのかほかの担当の人につなげてくれました。また同じことを言ってパスワードを伝えます。

そのあと、”What is your app number.” と言われました、そんなものは知りませんでしたがどうやら話を聞いているとオーダーナンバーのことようです。これを伝えたら “Have a nice day !” と言われました。終わりです。ちゃんと “You too !”って言って切りました。いやはや、大変大変。

次の日、証明書を発行しましたよ!!!というメールが来ました。URL が書いてあるのでリダイレクトします。

オンラインでインストールを選択すると Java が起動し証明書を秘密鍵の入った USB にインポートしてくれます。これで完了!終わり!お疲れ様です!

最後にインポートが終わったら再起動してください。そうすれば署名できます


Visual Studio 2022 の Developer Console で署名する

ここからは簡単です。以下のコマンドプロンプトを起動します。

署名したいファイルのあるディレクトリに入ります。そして以下のコマンドを実行します。

signtool.exe sign /n "Open Source Developer, 「自身の名前」" /tr http://time.certum.pl/ /td SHA256 /fd sha256 /v 「対象ファイル名」

私の場合、以下のようになりました。ブラウザーのため、ファイル数は多くなっています。

signtool.exe sign /n "Open Source Developer, Ryosuke Asano" /tr http://time.certum.pl/ /td SHA256 /fd sha256 /v Accessible.tlb AccessibleHandler.dll AccessibleMarshal.dll api-ms-win-core-file-l1-2-0.dll api-ms-win-core-file-l2-1-0.dll api-ms-win-core-localization-l1-2-0.dll api-ms-win-core-processthreads-l1-1-1.dll api-ms-win-core-synch-l1-2-0.dll api-ms-win-core-timezone-l1-1-0.dll api-ms-win-crt-conio-l1-1-0.dll api-ms-win-crt-con........(以下略

また、これを行う際は USB をパソコンに刺しておく必要があります。そうじゃないとできません。

Windows セキュリティと書かれたプロンプトが出てくるので、そこに先ほど設定した PIN を入力します。すると署名完了です。

おまけ:二番煎じの自動化

やはり署名は面倒だったので自動化しました。これで安心安心。また、入力した内容はこんな感じです。

cd C:\Floorp-Repackage\Floorp-work
"C:\Program Files\7-Zip\7z.exe" x "%SelectedFile%"

cd core

signtool.exe sign /n "Open Source Developer, Ryosuke Asano" /tr http://time.certum.pl/ /td SHA256 /fd sha256 /v Accessible.tlb AccessibleHandler.dll AccessibleMarshal.dll api-ms-win-core-file-l1-2-0.dll api-ms-win-core-file-l2-1-0.dll api-ms-win-core-localization-l1-2-0.dll api-ms-win-core-processthreads-l1-1-1.dll api-ms-win-core-synch-l1-2-0.dll ... 以下略(((

cd ..\

"C:\Program Files\7-Zip\7z.exe" a -r -t7z app.7z -mx -m0=BCJ2 -m1=LZMA:d24 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3

cd ..\

copy /B 7zSD.sfx+"app.tag"+"Floorp-work\app.7z" "floorp.win64.installer.exe"