4

keytool を使用して生成したキーで jar に署名しました。実行時に、jar が変更されていないことを確認するにはどうすればよいですか?

目標は、証明書情報を使用して、jar がビルドされてから jar 内の各クラスが変更されていないことを確認することです。これはランタイム チェックであるため、コードを含む jar はユーザーのファイル システムのどこにでも存在する可能性があります。

4

1 に答える 1

2

このJarFileクラスには jar ベリファイアが組み込まれています。このコード スニペットは、アーカイブ内のすべてのエントリの署名を検証します。

JarFile jar = new JarFile("/path/to/myarchive.jar");
Enumeration<JarEntry> entries = jar.entries();
while (entries.hasMoreElements()) {
    JarEntry entry = entries.nextElement();
    try {
        jar.getInputStream(entry);
    } catch (SecurityException se) {
        /* Incorrect signature */
        throw new Error("Signature verification failed", se);
    }
}

このコードは jar の整合性を検証しますが、特定のキーまたは証明書に対して署名を検証しないことに注意してください。

于 2011-02-11T15:44:58.217 に答える