Как проверить, что обновление Java — не подделка, через подпись сертификата

Как проверить, что обновление Java — не подделка, через подпись сертификата

Вы скачали обновление Java с сайта, а потом увидели предупреждение в антивирусе: «Подозрительная подпись». Или ваша система не запускает Java-приложение после обновления — и в логах мелькает «invalid signature». Вы не один. Каждый месяц десятки компаний сталкиваются с поддельными установщиками Java, которые выдают себя за официальные, но содержат трояны, шифровальщики или бэкдоры. И всё потому, что люди не проверяют подпись сертификата. Не потому, что они глупые. Просто никто не объяснил, как это сделать — и зачем.

Сегодня я покажу вам, как за пять минут проверить, что скачанное обновление Java — настоящее, а не подделка. Без теории про PKI, без сложных терминов. Только то, что нужно сделать — и почему это спасает вам сервер, данные и нервы.

Почему подпись сертификата — это не «бонус», а обязательная проверка

Java от Oracle — это не просто программа. Это фундамент для тысяч корпоративных систем: банки, биржи, логистика, медицинское оборудование. Всё это работает на Java-приложениях. Если кто-то подменит обновление — он получает доступ к вашей инфраструктуре. Без паролей. Без взлома. Просто потому что вы доверили ему файл, который выглядел как «java-update-21.0.2.exe».

Oracle подписывает каждый установщик цифровой подписью. Это как печать на конверте — только цифровая. Подпись привязана к сертификату, который Oracle выдал самому себе. Если файл подменён — подпись ломается. Антивирус или система Windows/Unix это сразу видят.

Но если вы не проверяете подпись — вы не знаете, что файл подменён. Даже если он выглядит как официальный. Даже если скачан с сайта, который выглядит как oracle.com. Фишинговые сайты делают копии страниц Oracle с точностью до пикселя. И размещают там вредоносный установщик. С поддельной подписью — но вы её не проверяете. И не знаете, что это подделка.

Подпись — это не «дополнительная мера». Это последняя и самая надёжная линия обороны. Если вы не проверяете её — вы доверяете всему, что скачиваете. А это уже не осторожность. Это рулетка.

Как проверить подпись Java-обновления — пошагово

Всё, что нужно — это команда в терминале. Никаких специальных программ. Никаких платных инструментов. Только то, что есть на любом Windows, Linux или macOS.

  1. Скачайте установщик Java. Например, jdk-21.0.2_windows-x64_bin.exe или jdk-21.0.2_linux-x64_bin.tar.gz.
  2. Откройте терминал (Командная строка на Windows, Terminal на macOS/Linux).
  3. Перейдите в папку, где лежит файл. Например:
    cd C:\Downloads
  4. Выполните команду для Windows (для .exe):
    signtool verify /v /pa jdk-21.0.2_windows-x64_bin.exe
  5. Для Linux/macOS (.tar.gz или .bin):
    keytool -printcert -jarfile jdk-21.0.2_linux-x64_bin.tar.gz

Если всё в порядке — вы увидите что-то вроде:

SignTool Verification Succeeded
Signer Certificate:
  Subject: CN=Oracle Corporation, OU=Java Software, O=Oracle Corporation, L=Redwood City, ST=California, C=US
  Issuer: CN=Symantec Class 3 SHA256 Code Signing CA, OU=Symantec Trust Network, O=Symantec Corporation, C=US
  Serial Number: 77:xx:xx:xx:xx:xx:xx:xx
  Valid from: 01/01/2023 to 01/01/2026

Ключевые моменты, на которые смотреть:

  • Subject — должен содержать Oracle Corporation. Если там «Microsoft Corporation», «Adobe Systems» или «Unknown» — это подделка.
  • Issuer — должен быть Symantec, DigiCert или другой доверенный центр сертификации. Oracle использует только проверенные CA.
  • Valid from/to — сертификат должен быть действителен. Если дата истекла — это тоже тревожный знак. Oracle обновляет сертификаты раз в 2–3 года. Если вы видите сертификат с датой 2018 года — это несвежая версия, возможно, подменённая.

Если команда выдаёт ошибку — например, SignTool failed with error: 0x800b010a — это означает, что подпись не прошла проверку. Файл повреждён или поддельный. Удалите его. Никогда не запускайте.

Что делать, если вы скачали Java не с oracle.com

Вы не обязаны скачивать Java только с oracle.com. Но вы обязаны проверять подпись — даже если файл взят с сайта, который вам доверяете.

Вот что может быть на практике:

Источник Можно ли доверять без проверки? Что проверять
oracle.com (официальный сайт) Нет. Даже здесь могут быть скомпрометированные зеркала. Проверяйте подпись — всегда.
Сайт вашей компании (внутренний репозиторий) Да, но только если файл был загружен с oracle.com и подпись проверена администратором. Убедитесь, что админ проверил подпись при загрузке. Не доверяйте «на слово».
GitHub, SourceForge, торренты Нет. Ни при каких обстоятельствах. Не скачивайте. Удалите. Сообщите в ИБ-отдел.
Сторонний сайт с «бесплатной Java» Нет. Это 99% подделки. Никогда не запускайте. Даже если там «OpenJDK».

OpenJDK — это не подделка. Это открытая реализация Java. Но её тоже нужно скачивать только с официальных источников: Adoptium, BellSoft, Azul. И у них тоже есть подписи. Проверяйте их так же, как у Oracle.

Частые ошибки — и как их избежать

Вот что я видел в реальных инцидентах:

  • «Я скачал с oracle.com — значит, всё в порядке». Нет. Сайт мог быть скомпрометирован. Атака через DNS-спуфинг, подмена CDN — всё реально. Подпись — ваша последняя защита.
  • «У меня антивирус — он всё проверит». Антивирус может не распознать новую подделку. Особенно если она подпись подделала под Oracle. Или использует украденный сертификат. Подпись — это не «антивирусная проверка». Это криптографическая верификация.
  • «Я проверяю только размер файла». Поддельный установщик может быть точно такого же размера, как оригинальный. Вредоносный код вставляют в ресурсы, не меняя общий объём.
  • «Я не админ — мне это не нужно». Даже если вы просто запускаете Java-приложение на рабочем компьютере — вы часть цепочки. Поддельное обновление может попасть на сервер через вашу машину.
  • «Я проверяю подпись, но не смотрю на issuer». Некоторые подделки используют сертификаты с Subject=Oracle, но Issuer=непонятный. Это признак подмены. Всегда проверяйте и issuer, и subject.

Что выбрать в зависимости от ситуации

Вот как действовать в разных сценариях:

  • Вы — ИТ-специалист в компании: настройте автоматическую проверку подписи в скрипте развертывания. Перед установкой Java — запускайте signtool verify или keytool -printcert. Если подпись не прошла — отмените установку и отправьте алерт.
  • Вы — разработчик, работающий на домашнем ПК: скачивайте только с oracle.com или adoptium.net. Проверяйте подпись каждый раз. Даже если вы делаете это впервые — это займёт 2 минуты. Сэкономит вам неделю на восстановление системы.
  • Вы — админ, который раздаёт Java через внутренний репозиторий: загружайте файлы только с официального сайта. Проверяйте подпись. Записывайте хеш (SHA-256) и подпись в документацию. Пусть все, кто качает из репозитория, знают: «Мы проверили. Это безопасно».
  • Вы — пользователь, который не разбирается в технике: не скачивайте Java вообще. Пусть это делает ваш ИТ-отдел. Если вы не знаете, как проверить подпись — не устанавливайте обновления вручную. Это не стыдно. Это разумно.

Как лучше сделать — практические рекомендации

Вот что реально работает на практике:

  1. Всегда проверяйте подпись. Даже если вы уверены, что файл легальный. Даже если вы скачали его вчера. Даже если вы его уже устанавливали. Подпись — это не разовая проверка. Это ежедневная привычка.
  2. Запомните хеш SHA-256 официального файла. На странице загрузки Oracle есть хеш. Скачайте файл. Посчитайте его хеш через:
    certutil -hashfile jdk-21.0.2_windows-x64_bin.exe SHA256

    (Windows) или

    sha256sum jdk-21.0.2_linux-x64_bin.tar.gz

    (Linux/macOS). Сравните. Если совпадает — это хороший знак. Но хеш не заменяет подпись. Он только дополняет её.

  3. Не используйте старые версии Java. Oracle перестаёт подписывать старые версии. Если вы видите обновление Java 8 — и оно подписано сертификатом 2020 года — это может быть подделка. Java 8 больше не поддерживается. Скачивайте только Java 11, 17 или 21.
  4. Используйте менеджеры пакетов. На Linux — apt install openjdk-17-jdk. На macOS — brew install openjdk@17. Они проверяют подпись автоматически. Это самый безопасный способ для большинства пользователей.
  5. Настройте мониторинг. Если у вас есть несколько серверов — настройте скрипт, который раз в день проверяет подпись Java на всех. Если подпись не прошла — приходит уведомление. Это не сложно. Это спасает от инцидентов.

Итог: что делать прямо сейчас

Вы не должны ждать, пока произойдёт инцидент. Вы должны действовать сейчас.

Вот что вам нужно сделать в течение следующих 10 минут:

  1. Найдите любой файл Java на вашем компьютере — установщик, .exe, .bin, .tar.gz.
  2. Откройте терминал.
  3. Запустите команду проверки подписи: signtool verify /v /pa имя_файла.exe (Windows) или keytool -printcert -jarfile имя_файла.tar.gz (Linux/macOS).
  4. Проверьте, что в Subject написано Oracle Corporation или Adoptium (если OpenJDK).
  5. Если подпись не прошла — удалите файл. Скачайте его заново с официального сайта. Повторите проверку.
  6. Если прошла — запишите это себе: «Я проверил. Это безопасно».

Повторяйте это каждый раз, когда скачиваете Java. Даже если вы делаете это в 100-й раз. Даже если вы уверены, что «всё нормально».

Подпись сертификата — это не про «технарей». Это про то, чтобы не остаться без данных, без серверов, без работы. Это про то, чтобы не стать причиной утечки, потому что вы не проверили одну строку в терминале.

Вы не обязаны быть экспертом. Вы обязаны проверять подпись. Это — ваша обязанность, если вы работаете с Java.

Информация в этой статье носит ознакомительный характер. Установка и настройка программного обеспечения, особенно в корпоративной среде, требует согласования с ответственными за информационную безопасность. Перед принятием решений проконсультируйтесь с профильным специалистом.

Оцените статью
PEFile — Безопасность и технологии простым языком