ukey证书简介

目录:
一、CA、RA、Ukey厂商和业务系统的关系
二、CA证书的重要属性(DN、SN、参考号、授权号、有效日期、证书状态、颁发者)
三、CSP与密钥容器
四、证书的作用


正文:

一、CA、RA、Ukey厂商和业务系统的关系

1、CA中心,又称为数字证书认证中心,作为电子商务交易中受信任的第三方,专门解决公钥体系中公钥的合法性问题。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户名称与证书中列出的公开密钥相对应。CA中心的数字签名使得攻击者不能伪造和篡改数字证书。

2、RA(Registration Authority),数字证书注册审批机构。RA系统是CA的证书发放、管理的延伸。它负责证书申请者的信息录入、审核以及证书发放等工作;同时,对发放的证书完成相应的管理功能。发放的数字证书可以存放于IC卡、硬盘或软盘等介质中。RA系统是整个CA中心得以正常运营不可缺少的一部分。

3、Ukey厂商,Ukey又称USBKey,是数字证书的硬件载体。目前国内的UKey厂商有大明五洲、海泰、恒宝、中钞、华大等。

4、业务系统需要在CA登记注册获取根证书,然后对根证书签发给客户的数字证书做校验和解密。


二、CA证书的重要属性(DN、SN、参考号、授权号、有效日期、证书状态、颁发者)

1、证书DN,X.509证书使用DN(Distinct Name)来标识一个实体,其功能类似于我们平常使用的ID,可以在制证过程中和证书属性中查看,如下图所示


2、证书SN(Serial Number),证书序列号是证书的唯一标识。和DN的区别是,当发生换证、补发情况时,DN是相同的,而SN是不同的。

3、参考号和授权码,这两个字段用在证书下载过程中。

4、证书状态有:未下载、激活、冻结和注销。

5、颁发者,是证书的签发证书DN,在证书验证过程中需要验证该属性。


三、CSP与密钥容器

CSP,全称Cryptographic Service Provider  是加密服务提供者。它是windows系统中提供的用于加密的软硬件组件。

密钥容器,就是存放证书密钥对的容器。

  每个CSP有一个密钥库,密钥库用于存储密钥。而每个密钥库包括一个或多个密钥容器(Key Containers)。每个密钥容器中含属于一个特定用户的所有密钥对。每个密钥容器被赋予一个唯一的名字。在销毁密钥容器前CSP将永久保存每一个密钥容器,包括保存每个密钥容器中的公/私钥。

四、证书的作用

1、身份认证:本地认证采用基于硬件令牌的多因子认证技术,通过客户端认证设备确定用户的身份的合法性。采用CFCA的证书体系,通过硬件设备实现用户网络身份的认证。
2、用户管理功能
3、信息加密传输:利用SSL协议来保证
4、操作的不可否认性:在数据进行报送后,保证交易的任何一方无法否认已发生的报送行为。

以下是一个基本的 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、付费专栏及课程。

余额充值