ukey证书是什么意思_什么是证书?

ukey证书是什么意思

事实证明,证书很重要。 过期的证书可能会给您带来巨大的问题-这就是新闻中的故事在告诉我们。 但是什么是证书,为什么它们会过期,又为什么会产生如此大的影响? 要回答这些问题,让我们退后一步,看看为什么首先需要证书。

让我们假设两个人,爱丽丝和鲍勃,想要交换秘密信息。 让我们进一步说,鲍勃实际上是爱丽丝的银行Bobcorp,她希望能够以加密形式发送和接收她的银行对帐单。 有完善的方法可以做到这一点,最简单的方法是让他们就将用于加密和解密彼此消息的共享密钥达成一致。 他们如何在此密钥上达成共识? 幸运的是,即使他们之前没有进行过交流,也可以通过一些巧妙的方式来管理两个人之间的“握手”,最终这两种方式都是拥有密钥的副本而不会让其他人抓住它。

问题在于,爱丽丝不能确定自己是否正在与Bobcorp交谈(反之亦然)。 Bobcorp在这一点上可能不介意,因为他可以要求Alice提供她的登录凭据,这将使他能够对她进行身份验证 。 但爱丽丝确实护理:她当然不应该递给她的登录信息给别人,让我们称她为“夏娃” -谁只是故作鲍勃。

该问题的解决方案分为两部分:证书和证书颁发机构(CA)。 CA是Bobcorp已与之建立关系的知名且受信任的方,通常通过提供公司详细信息,网站详细信息等来建立关系。 Bobcorp还创建并向CA发送一个专用密钥和有关其自身的特定信息(可能包括公司名称,地址和网站信息)。 建立了Bobcorp真实信誉的CA会为Bobcorp创建证书,其中包含了所请求的信息。 实际上,Bobcorp发送给CA的某些信息通常以“自签名证书”的形式出现,因此CA要做的几乎所有工作就是提供自己的签名。

精明的读者会问自己:“这有什么帮助?爱丽丝仍然需要信任CA,对吗?” 答案是她做到了。 但是,与Bobcorp型公司相比,通常只有少量的CA,因此Alice要做的就是确保她可以信任一些CA,并且现在很顺利。 在网络浏览方案中,Alice通常将下载一个浏览器,该浏览器已经与主要CA建立了适当的内置信任关系。 现在,她可以与许多公司进行安全的握手,并且只要她(或浏览器)检查它们是否提供了由她信任的CA签名的证书,她就相对安全。

但是有一个转折。 CA颁发给Bobcorp(和其他公司)的证书通常具有到期日。 这不仅是为CA提供经常性收入来源-尽管我敢肯定这是一个不错的好处-但万一Bobcorp的情况发生了变化,例如它已经破产或改变了营业地怎么办? ? 1因此,经过一段时间(通常为一两年,但可能更少或更长时间)后,Bobcorp必须重新申请以获得新证书。

如果Bobcorp忘记了怎么办? 好吧,当爱丽丝访问Bobcorp的网站并且浏览器注意到证书过期时,它应该希望她不要继续操作,并且在更新之前不要给他们任何信息。 这听起来很痛苦,而且是:Bobcorp及其客户将受到极大的困扰。 Bobcorp内部某人的工作是要续签证书,这会遇到麻烦。

在没有实际人员参与的情况下,生活甚至更糟。 如果不是爱丽丝,我们有一个自动化系统A,而鲍勃,我们有一个自动化系统B。A仍然需要相信它正在与真实的B对话,以防万一邪恶的系统E在假装为B,因此仍需要证书。 在这种情况下,如果B的证书过期,则A应该很正确地拒绝连接它。 没有简单的方法可以解决此问题或告诉许多可能一直在尝试与B系统进行通信的A型​​系统以继续进行。 因此,由于缺少钉子,王国失去了

课程? 避免单点故障,考虑回退模式,并准备采取措施纠正意外错误。 很快。


1.也有多种机制来吊销或取消证书,但是它们通常很复杂,在许多情况下实施不当,因此很少使用。

本文最初发表于爱丽丝,夏娃和鲍勃 ,经作者许可转载。

翻译自: https://opensource.com/article/19/1/what-certificate

ukey证书是什么意思

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的 C# 示例,演示如何读取 USB 密钥并获取证书和图像: ```csharp using System; using System.Security.Cryptography.X509Certificates; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; namespace UkeyTest { class Program { [DllImport("gclib.dll")] public static extern int GC_GetDllVersion(byte[] pVer); [DllImport("gclib.dll")] public static extern int GC_Init(int iType, int iPort, int iBaud); [DllImport("gclib.dll")] public static extern int GC_UnInit(); [DllImport("gclib.dll")] public static extern int GC_GetCardInfo(byte[] pCardInfo, int iInfoLen); static void Main(string[] args) { // 初始化 USB 密钥 int ret = GC_Init(0, 100, 115200); if (ret != 0) { Console.WriteLine("初始化 USB 密钥失败!Error Code: {0}", ret); return; } // 获取 USB 密钥证书 byte[] certBuf = new byte[4096]; ret = GC_GetCardInfo(certBuf, certBuf.Length); if (ret <= 0) { Console.WriteLine("获取 USB 密钥证书失败!Error Code: {0}", ret); GC_UnInit(); return; } X509Certificate2 cert = new X509Certificate2(certBuf); Console.WriteLine("证书主题:{0}", cert.Subject); Console.WriteLine("证书颁发者:{0}", cert.Issuer); Console.WriteLine("证书有效期:{0} - {1}", cert.NotBefore, cert.NotAfter); // 获取 USB 密钥图像 byte[] imgBuf = new byte[1024 * 1024]; ret = GC_GetCardInfo(imgBuf, imgBuf.Length); if (ret <= 0) { Console.WriteLine("获取 USB 密钥图像失败!Error Code: {0}", ret); GC_UnInit(); return; } Image img = Image.FromStream(new MemoryStream(imgBuf)); Console.WriteLine("图像大小:{0} x {1}", img.Width, img.Height); // 保存 USB 密钥图像到文件 img.Save("ukey_image.jpg", ImageFormat.Jpeg); // 关闭 USB 密钥 GC_UnInit(); } } } ``` 请注意,此示例代码中使用的方法和函数来自于 `gclib.dll`,这是一个与 USB 密钥相关的第三方库。因此,在使用此代码之前,请确保您已正确安装了 `gclib.dll` 并将其添加到您的项目引用中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值