1. 如何获取数字证书(x509Certificate)中的指纹算法
创建X509证书方法较多,在Windows 环境下大致总结了几中办法,
1) 通过CA获取证书,
2) 通过微软提供的makecert 工具得到测试证书
3) 编程的方法创建,.Net提供了 X509Certificate2 类,该类可以用于创建证书,但只能从RawData中创建,创建后无法修改除FriendlyName以外的任何属性。
我在互联网上找了很久,始终没有找到完全通过程序创建自定义的证书的方法。后来想了一个折中办法,就是用程序调用 makecert.exe 先生成一个证书,证书的一些参数如Subject,有效期,序列号等可以通过参数传入,然后把生成的证书文件读到Rawdata中,得到X509Certificate2 类型的证书对象。当然这种方法确实比较笨,必须要依赖外部进程。等后面有时间的话,我还是想按照X509 V3 标准,自己创建RawData,然后生成证书,这样应该是比较灵活的做法。不知道网友们有没有什么更好的方法来创建一个自定义的证书。
通过 makecert.exe 创建X509证书的代码如下,供大家参考
static object semObj = new object();
/// <summary>
/// 自定义的证书信息
/// </summary>
public class T_CertInfo
{
public String FriendlyName;
public String Subject;
public DateTime BeginDate;
public DateTime EndDate;
public int SerialNumber;
}
/// <summary>
/// 生成X509证书
/// </summary>
/// <param name="makecrtPath">makecert进程的目录</param>
/// <param name="crtPath">证书文件临时目录</param>
/// <param name="certInfo">证书信息</param>
/// <returns></returns>
public static X509Certificate2 CreateCertificate(String makecrtPath, String crtPath,
T_CertInfo certInfo)
{
Debug.Assert(certInfo != null);
Debug.Assert(certInfo.Subject != null);
string MakeCert = makecrtPath + "makecert.exe";
string fileName = crtPath + "cer";
string userName = Guid.NewGuid().ToString();
StringBuilder arguments = new StringBuilder();
arguments.AppendFormat("-r -n \"{0}\" -ss my -sr currentuser -sky exchange ",
certInfo.Subject);
if (certInfo.SerialNumber > 0)
{
arguments.AppendFormat("-# {0} ", certInfo.SerialNumber);
}
arguments.AppendFormat("-b {0} ", certInfo.BeginDate.ToString(@"MM\/dd\/yyyy"));
arguments.AppendFormat("-e {0} ", certInfo.EndDate.ToString(@"MM\/dd\/yyyy"));
arguments.AppendFormat("\"{0}\"", fileName);
2. 什么是数字证书从哪办理归什么单位管理
数字证书就是一串数据,里面包括数字证书使用者的姓名、身份证号等信息,等于将数字证书与现实人员进行绑定,当您在网络中使用数字证书时就可以通过解析数字证书得到真实人员信息了。
数字证书也分好几类,有人员证书,服务器证书等等。也有企业证书。不一样的。根据发放数字证书模板来定。
数字证书分为两种一种是软证书,是安装在IE里的。一种是在USBKey里生成的证书,后者因为私钥是在Key里生成,不可导出,在一定程序上保证了证书的安全性。
数字证书管理单位一般为该证书的颁发机构来管理,比如:证书过期呀、丢失需要冻解、重新申请,等等。
(2)数字证书解析扩展阅读:
数字证书“过期”:
依照国家《电子签名法》相关规定,数字证书颁发企业必须设定证书有效期,通常为一年或两年。至于具体期限是多久,在客户端左下角一看便知。
数字证书到期,处理方式自然是重新更新了,如果数字证书到期时间不超过三个月的话可进入“网上服务大厅”进行更新 ,超过三个月的话就得需要你走一趟业务受理点来办理了。
特点
安全性
(1)为了避免传统数字证书方案中,由于使用不当造成的证书丢失等安全隐患,支付宝创造性的推出双证书解决方案:支付宝会员在申请数字证书时,将同时获得两张证书,一张用于验证支付宝账户,另一张用于验证会员当前所使用的计算机。
(2)第二张证书不能备份,会员必须为每一台计算机重新申请一张。这样即使会员的数字证书被他人非法窃取,仍可保证其账户不会受到损失。
(3)支付盾是一个类似于U盘的实体安全工具,它内置的微型智能卡处理器能阻挡各种的风险,让您的账户始终处于安全的环境下。
唯一性
(1)支付宝数字证书根据用户身份给予相应的网络资源访问权限
(2)申请使用数字证书后,如果在其他电脑登录支付宝账户,没有导入数字证书备份的情况下,只能查询账户,不能进行任何操作,这样就相当于您拥有了类似“钥匙”一样的数字凭证,增强账户使用安全。
方便性
(1)即时申请、即时开通、即时使用。
(2)量身定制多种途径维护数字证书,例如通过短信,安全问题等。
(3)不需要使用者掌握任何数字证书相关知识,也能轻松掌握。
3. CA证书到底有什么用在阿里云买了一个然后自动解析到我的域名里了,麻烦说通俗一点,我小白
这是SSL证书,是用来安装在服务器上,为访客提供https安全连接使用的。
正确将这个内证书安装在服容务器对应网站上之后,访客可以通过https方式访问你的网站,访问你的网站的时候浏览器地址栏里会出现一把小锁,此时,服务器和客户端之间的连接就会经过验证了,这样更安全,可以保证不被流氓运营商插入广告以及访问网站时被第三方获知访问网页的内容,并且访客看到地址栏里面有把小锁的时候也会觉得更放心。
国外搜索引擎在对同关键词的网站中的https网站排名也会排的更靠前一些。
现在好多网站都是https化了,如果你条件允许的话也不妨迁移到https。
4. SSL数字证书不同品牌有什么区别
全球可信机构大概六家左右,靠谱品牌SSL证书签发机构:
1、GlobalSign、2、DigiCert、3、Comodo(Sectigo)。
注:以上排名顺序不分回先后,赛答门铁克其旗下品牌已被DigiCert收购。
申请方法:
登录:Gworg(可以淘宝或者搜索引擎找到)
将需要的域名或IP发给客服,选择对应的SSL证书类型。
按照认证要求,完成DNS解析认证。
几分钟后邮箱收到SSL证书,点击下载到桌面。
将SSL证书配置到服务器,安装方法可以根据Gworg技术文档操作。
实现HTTPS加密,完成。
获得SSL证书:按照以上方法申请完毕后,登录邮箱获得SSL证书。
5. 名词解释数字证书
数字证书就是来互联网通讯自中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。
它是由权威机构:CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。
(5)数字证书解析扩展阅读
证书申请:
一般来讲,用户要携带有关证件到各地的证书受理点,或者直接到证书发放机构即CA中心填写申请表并进行身份审核,审核通过后交纳一定费用就可以得到装有证书的相关介质(磁盘或Key)和一个写有密码口令的密码信封。
域名型的证书申请的时候,无须递交书面审查资料,仅需进行域名有效性验证,网上申请。而企业型证书需要进行严格的网站所有权的真实身份验证,证书标示企业组织机构详情,强化信任度。
增强型证书除了进行严格的网站所有权的真实身份验证之外,还加入第三方验证,证书标示增强组织机构详情,强化信任度。
6. 如何验证数字证书的有效性 信息安全
一、有效期
证书的有效期验证这个比较简单,就是使用时间在必须在证书起始和结束日期之间才有效,通过解析X.509对象很容易获取起止时间,判断证书有效期代码如下:
/// <summary>
/// 有效期验证
/// </summary>
/// <param name="cert"></param>
/// <returns></returns>
public static bool CheckDate(string cert)
{
byte[] bt = Convert.FromBase64String(cert);
System.Security.Cryptography.X509Certificates.X509Certificate2 x509
= new System.Security.Cryptography.X509Certificates.X509Certificate2(bt);
string date = x509.GetExpirationDateString();
DateTime dtex = Convert.ToDateTime(date);
DateTime dtnow = DateTime.Now;
DateTime dteff = Convert.ToDateTime(x509.GetEffectiveDateString());
if (dteff < dtnow && dtnow < dtex)
{
return true;
}
return false;
}
二、颁发根证书
每个数字证书都有颁发根证书的签名,验证证书就是用根证书公钥来验证证书颁发者签名。首先,必须要找到数字证书的颁发根证书,Windows本身集成一些权威的受信任的根证书颁发机构,如VeriSign等,如果不在受信任的证书列表,我们打开证书会显示“Windows 没有足够信息,不能验证该证书”,当然我们可以把根证书加到受信任的根证书列表,这样证书就可以显示正常。
一般带证书链的数字证书中会包含证书颁发机构颁发者,逐级验证到最顶级根证书,每一级都用上级颁发根证书验证证书签名,直到证书颁发者和使用者一样自己可以验证自己通过。根证书的基本约束会不一样,Subject Type=CA代表可以签发证书,而一般的用户证书为Subject Type=End Entity,为终端实体不能再签发证书。
三、CRL验证
CRL是经CA签名的证书作废列表,用于做证书冻结和撤销时对证书有效性状态控制。一般数字证书中都有 CRL分发点地址,提供了HTTP和LDAP方式访问。通过BouncyCastle库解析X509证书的扩展项我们可以获取到CRL地址,然后使用相应方式下载CRL进行验证。
获取数字证书CRL
在用LDAP方式下载CRL时,注意LDAP协议名称要大写,不然访问会出错。下载的CRL格式可能是BASE64编码的,需要判断转换成DER编码二进制格式。
CRL分全量CRL和增量CRL,另外还有分段CRL,即同个CA的证书分不同的CRL地址段,主要是为了分流服务器负载。CRL有生效日期和下次更新时间,一般是定时更新,所以CRL并不是即时状态的。因此还有OCSP在线证书状态协议,可以即时的查询证书状态。
7. DNS被劫持时数字证书是否还有效
如果来是被墙了(通常网站内源容是有问题的)那么只能更换DNS才可以解决,当然也可以用DNS染加注等一些技术手段,解析IP也可以换成新的,数字证书的存在是指HTTP协议被劫持的情况下,配置了HSTS等加密技术重要手段,实现强制浏览器默认加密的行为,他可以有效防止劫持。数字证书防劫持手段:网页链接