Вы можете пропустить весь процесс X509, ведь он вам действительно не нужен, если вы собираетесь использовать собственные сертификаты ...
Для того, что вы хотите сделать, сначала вам нужно сгенерировать пару секретных / открытых ключей RSA. Затем вы сохраняете открытый ключ в своем приложении.
Когда у вас есть обновление, вы подписываете его на своем сайте, получая MD5 или SHA-1 или любой другой хеш, который вы хотите использовать; затем вы шифруете этот хеш с помощью закрытого ключа. Установленные приложения получают обновление и подпись (зашифрованный хеш); когда приложение получает двоичный файл, оно вычисляет свой хэш, затем расшифровывает другой с помощью открытого ключа и сравнивает их. Если они идентичны, то это действительное обновление, в противном случае вы отклоняете его и предупреждаете пользователя или что-то в этом роде.
С сертификатами X509, которые являются самозаверяющими, механизм будет именно таким, но открытый ключ будет иметь множество дополнительных данных, таких как идентификатор эмитента, который будет таким же, как сертификат.