java.lang.SecurityException: Invalid certificates

271
14 марта 2017, 13:25

Взял лаунчер из этого репозитория: Launcher Minecraft

Пытаюсь запустить его и получаю исключение.

Exception in thread "main" java.lang.SecurityException: Invalid certificates
at launcher.helper.SecurityHelper.verifyCertificates(SecurityHelper.java:376)
at launcher.Launcher.main(Launcher.java:243)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

SecurityHelper.java:376

@LauncherAPI
public static void verifyCertificates(Class<?> clazz) {
    if (!isValidCertificates(clazz)) {
        throw new SecurityException("Invalid certificates");
    }
}

Launcher.java:243

public static void main(String... args) throws Throwable {
    JVMHelper.verifySystemProperties(Launcher.class);
    SecurityHelper.verifyCertificates(Launcher.class);
    LogHelper.printVersion("Launcher");
    // Start Launcher
    Instant start = Instant.now();
    try {
        new Launcher().start(args);
    } catch (Exception e) {
        LogHelper.error(e);
        return;
    }
    Instant end = Instant.now();
    LogHelper.debug("Launcher started in %dms", Duration.between(start, end).toMillis());
}

Подписываю jar таким путем.

jarsigner -keystore "C:\Launcher\.keystore" -storepass "mypass" -sigfile LAUNCHER "C:\Launcher\Launcher.jar" "myalias"

Здесь проверяется на сертификацию.

@LauncherAPI
public static boolean isValidCertificates(Class<?> clazz) {
    // Verify META-INF/MANIFEST.MF certificate
    Resource metaInf = JVMHelper.UCP.getResource(JarFile.MANIFEST_NAME);
    if (metaInf == null || !isValidCertificates(metaInf.getCertificates())) {
        return false;
    }
    // Verify class certificate
    CodeSource source = clazz.getProtectionDomain().getCodeSource();
    return source != null && isValidCertificates(source.getCertificates());
}

UPD:

Оказывается LAUNCHER.DSA и LAUNCHER.SF не записываются в jar. Хоть я и подписываю jar при билде.

Если просто сделать билд без запуска и изучить Launcher.jar, то видно, что LAUNCHER.DSA и LAUNCHER.SF присутствуют. Возникает вопрос: почему при сборке LAUNCHER.DSA и LAUNCHER.SF не попадают в Launcher.jar?

READ ALSO
Циклические башни [требует правки]

Циклические башни [требует правки]

Нужно составить алгоритм для этой задачи

622
Не срабатывает onDestroy

Не срабатывает onDestroy

Имеется активити, в которой в onCreate вызываю фрагмент видео плеераВо фрагменте есть методы:

278
libGDX ошибка получение asset в Desktop проекте

libGDX ошибка получение asset в Desktop проекте

Добрый день, начал осваивать libGDX, столкнулся с проблемой, Desktop проект не находит asset, проверил на андроид устройстве все работает нормально

269
Белый экран в onCreate

Белый экран в onCreate

ЗдравствуйтеВ onCreate() делаю некоторые несложные действия

225