【发布时间】:2020-10-09 17:36:33
【问题描述】:
这个想法是在 .Net Core 应用程序中放置一个定时炸弹(它是 beta/试用版,不是完全可用的产品,从法律的角度来看是可以的)。
我想使用 X509 证书来实现这一点,但很难理解它是如何工作的以及需要做什么。
到目前为止,我使用 OpenSSL 创建了一个私钥(我们称之为 trial.key):
openssl genrsa -des3 -out trial.key 2048
,然后使用 -days 参数 (trial.pem) 和密码“password”创建证书:
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 并用自己创建的证书替换它,没有时间限制(假设他知道密码)并使用该应用程序。
这里可以做什么?有没有办法可以在应用程序中对私钥进行硬编码并检查 trial.crt 是否已使用我的私钥签名?
【问题讨论】:
标签: asp.net-core ssl openssl x509certificate x509certificate2