私は、もともと個々の開発者向けの証明書と共に配布された電子アプリを持っています。
組織からの証明書を使用してそのアプリの次の更新に署名したいのですが、そうすると、(自動更新時に) 既存のインストールでコード要件が満たされていないというエラーがスローされます。
古い証明書と新しい証明書の両方で Electron アプリに適切に署名する方法はありますか? 既存のユーザーが中断されるのを防ぎたいです。
どんな助けでも大歓迎です!
ありがとう
私は、もともと個々の開発者向けの証明書と共に配布された電子アプリを持っています。
組織からの証明書を使用してそのアプリの次の更新に署名したいのですが、そうすると、(自動更新時に) 既存のインストールでコード要件が満たされていないというエラーがスローされます。
古い証明書と新しい証明書の両方で Electron アプリに適切に署名する方法はありますか? 既存のユーザーが中断されるのを防ぎたいです。
どんな助けでも大歓迎です!
ありがとう
自動更新を使用する MacOS 用の Electron アプリケーションで同様の状況が発生し、全員がアプリケーションを手動でダウンロードして再インストールすることなく、新しい証明書に切り替える必要がありました。自動更新プロセスは、新しい証明書を認識する必要があります。当然のことながら、新しい証明書が認識されない場合、古いバージョンは更新を拒否します。
私たちの戦略は次のとおりです。
designated requirement
(または DR) を確認します。codesign -d -v -r - <path-to-app>
designated requirement
新しい証明書で署名されたアプリケーションの を見てくださいdesignated requirement
両方の証明書を含む結合された をelectron-builder-requirements.txt
ファイルに配置しますidentifier
結合designated requirement
文字列に を含めないようにしてくださいelectron-builder-requirements.txt
ファイル内のへの参照を作成します (このようelectron-builder.yaml
に下に行を追加します)mac:
requirements: electron-builder-requirements.txt
electron-builder-requirements.txt
ファイルを削除します両方の証明書に関する情報を含む DR を持つ古いバージョンのアプリケーションは、いずれかの証明書を使用する新しいバージョンへの自動更新を許可します。
「指定された要件」を理解するのに役立つ手動でのコード署名に関するこのドキュメントを見つけました。
更新: ファイルの例を次に示しelectron-builder-requirements.txt
ます (プライバシー保護のため、文字/数字の一部を変更しました)。
designated => certificate leaf = H"2323ce6b0XXXXXXXX39f2064be999999997272b1" or anchor apple generic and certificate 1[field.1.2.840.199995.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.199995.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "6ZXXXXXXUY"