Идея состоит в том, чтобы поместить бомбу замедленного действия в приложение. Net Core (это бета / пробная версия, не полностью пригодный для использования продукт, это нормально с юридической точки зрения).
Я хотел используйте сертификат X509 для выполнения sh этого, но с трудом понимаете, как он работает и что нужно делать.
Пока что с помощью OpenSSL я создал закрытый ключ (назовем его trial.key) :
openssl genrsa -des3 -out trial.key 2048
, затем был создан сертификат с аргументом -days (trial.pem) и паролем «пароль»:
openssl req -x509 -new -nodes -key trial.key -sha256 -days 4 -out trial.pem
, а затем закончился trial.cert:
openssl x509 -outform der -in trial.pem -out trial.crt
Я добавляю trial.crt в приложение и проверяю даты при запуске:
private static void CheckTrialCert()
{
var trialCert = new X509Certificate2(Path.Combine("Certificates", "trial.crt"), "password");
if (trialCert.NotAfter < DateTime.Now)
{
Environment.Exit(0);
};
}
Проблема в том, что пользователь может найти на диске trial.crt и заменить его собственным созданным сертификатом без ограничение по времени (при условии, что он знает пароль) и использовать приложение.
Что здесь можно сделать? Можно ли жестко закодировать закрытый ключ в приложении и проверить, подписан ли try.crt моим закрытым ключом?