Где взять сертификат

Вариантов несколько:

Подпись jar

Этот гайд необходим всем тем кто хочет настроить JarSigner module, а так же начиная с 5.0.10 подписывание будет обязательным.
Перед началом работы, у вас уже должны быть:

  1. Установлен модуль JarSigner
  2. Сертификат
Конфигурация:

Для формата PKCS12 (рекомендуется)

{
  "key": "/home/myname/MyCert.p12",  // Путь к хранилищу ключей
  "storepass": "mypassword",         // Пароль от хранилища
  "algo": "PKCS12",                  // Тип хранилища
  "keyalias": "gravit code sign",    // Key Alias, см ниже как его узнать
  "pass": "mypassword",              // Пароль от хранилища, совпадает с storepass
  "signAlgo": "SHA256WITHRSA"        // При использовании ключей на эллиптический криптографии используйте SHA256withECDSA
}

Как узнать key alias из PKCS12 хранилища

Выполните keytool -storepass ПарольОтХранилища -keystore ПутьКХранилищу -list
У вас будет такой вывод
Your keystore contains 1 entry untrusted code sign, 20.10.2019, PrivateKeyEntry,
untrusted code sign - ваш key alias, его вы и должны будете указать
Утилита keystore поставляется вместе с JDK

Для JKS(Java KeyStore)

{
  "key": "/home/myname/MyCert.jks",  // Путь к хранилищу ключей
  "storepass": "mypassword",         // Пароль от хранилища
  "algo": "JKS",                     // Тип хранилища
  "keyalias": "gravit code sign ec", // Key Alias, задается при создании
  "pass": "mypassword",              // Пароль от хранилища, может не совпадать с storepass
  "signAlgo": "SHA256WITHRSA"        // При использовании ключей на эллиптический криптографии используйте SHA256withECDSA
}

Подпись exe

Инструкция и скрипты написаны под Linux
Перед началом работы с этими скриптами у вас уже должны быть:
  1. Установлен osslsigncode
    Debian-подобные системы: sudo apt install osslsigncode
  2. Сертификат
  3. Скрипты для подписи
Если ваш сертификат имеет расширение pfx просто переименуйте его в p12 (это одно и тоже)
В другом случае конвертируйте свой сертификат в формат p12
  1. В папку с скриптами положите ваш Launcher.exe
  2. Выполните sh sign-update.sh Launcher.exe
    Будет создан файл signsize.txt, который понадобится на следующем этапе
    Эту процедуру достаточно провести один раз
  3. Выполните sh sign.sh Launcher.exe
    У вас в папке со скриптами должен присутствовать signsize.txt
    Если всё прошло успешно, вам покажет информацию о сертификатах внутри exe
  4. Замените ваш Launcher.exe рядом с лаунчсервером подписанной версией, и пропишите syncBinaries в консоли лаунчсервера
При каждом билде шаги 3-4 нужно будет повторять заново
При появлении ошибки Corrupt jar file (размер подписи изменился) заново выполните шаги 1-4

Создание CSR (Certificate Signing Request) для 3 варианта получения сертификата

CSR это не сертификат - это запрос на сертификат
Необходимо установить OpenSSL
В терминале:
openssl genrsa -out private.key 4096
4096 - это размер приватного ключа в битах. Можно использовать от 1024 бит (небезопасно) до 8192 (безопасно).
Приватный ключ не должен быть скомпрометирован никем, и не должен передаватся по незащищенным каналам связи

Если вы хотите использовать эллиптические кривые вместо RSA:
openssl ecparam -name secp256k1 -genkey -out private.key
Где secp256k1 - название эллиптической кривой
Вы можете выбрать любую кривую на свое усмотрение, если понимаете что делаете
В противом случае рекомендуется оставить всё как есть

Далее:
openssl req -new -key private.key -out cert.csr
И отвечаем на вопросы примерно так:
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Russia
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyProjectName              
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:MyProjectName Code Sign
Email Address []:[email protected]
A challenge password []:
An optional company name []:
После чего CSR вы должны отправить тому, кто подпишет вам сертификат своим СА
После получения сертификата (.pem) соберите его с своим приватным ключем в формат pfx
openssl pkcs12 -export -in MyProjectName_Code_Sign.pem -inkey private.key -out cert.pfx
У вас спросят пароль. Если вы хотите дополнительно защитить ваш ключ - можете поставить
Готовый pfx вы можете использовать для подписи самостоятельно