上面有了解过什么是PDF数字证书签名,那数字签名证书是什么?
大家现在说到这个数字签名证书的话,简单介绍的话就是关于网络上的一个防护,其实这个解释起来也是非常容易的。这个证书可以更加增强大家在网络上的一个安全度,并且数字证书是分为个人与企业的,在一系列的办理中,由于涉及到大家的安全问题,所以对于一些保障方面也是做得很到位的。大家只要是在办理这项SSL证书的时候,找到正规的企业,那么一般情况下就是没有问题的。ssl证书可以在蔚可云申请。
证书签名在办理时,有的人觉得有些地方在办理的时候价格是比较便宜的,所以为了省掉一些钱,还是会选择便宜的SSL证书签名来进行办理。其实这样虽然在短时间内大家是觉得得了一些好处,但其实这些便宜的数字证书并不是十分的安全的。因此,只要是计划办理这项数字证书的,那么就还是需要不顾及价钱,找一家正规的企业才是最正确的。
在进行数字证书签名的时候有一些安全问题大家也是需要考虑的。对于需要提交的材料,大家一定需要按时提交上去,但是不需要的,大家也一定不要刻意的提交上去,这样或许没有帮得到大家,反而会泄露一些大家其他的事情。
而在最后的时候,数字签名证书还需要通过一个验证才是可以的。所以大家只要是在办理这项SSL的期间,那就一定要时刻的注意查收自己的信息才是。这样也是为了大家以后减少麻烦而做的必要防范。其他的还需要知道关于数字证书的事情,那大家还可以从网络上查找一下。
如何制作和应用数字签名证书
数字签名是一种用于信息 真实性 和 完整性 校验的手段,一套数字签名包含签名和验证两种运算。下面是一套简单的数字签名示意图。
数字签名使用 非对称加密 技术。每个人都有一对钥匙,私钥只有本人知道,公钥公开,私钥签名,公钥验签。
在进行信息传递时,信息发送者用私钥生成签名并将公钥一起发送给信息接收者,接收者使用公钥验签。上述过程中信息完整性得到校验,但发送者的身份是否合法无法得知(因为任何人都可以声称自己是合法的),因此引入了 身份认证机构 。
身份认证机构是 信息接收者 能信任的机构,所有的公钥必须向该机构进行注册。注册后身份认证机构给发送者颁发一 数字证书 。对文件签名后,发送者把此数字证书连同文件及签名一起发给信息接收者,接收者向身份认证机构求证是否真地是用发送者密钥签发的文件。
数字证书是一种电子档案,用来证明公钥拥有者的身份。此档案包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对该文件的数字签名。
证书的本质就是对公钥加数字签名,认证机构用自己的私钥对需要认证的人(或组织机构)的公钥进行数字签名并生成证书。
我们需要了解以下几种类型的证书
自签证书
用户可以自己生成数字证书,不过没有任何可信赖的人签名,它主要用于小范围测试,这种自签名证书通常不会被广泛信任,使用时可能会遇到电脑软件的安全警告。
根证书
根证书获得广泛认可,通常已预先安装在各种软体(包括操作系统、浏览器、电邮软件等),作为信任链的起点,来自于公认可靠的政府机关、证书颁发机构公司、非营利组织等,与各大软件商透过严谨的核认程序才在不同的软件广泛部署。由于部署程序复杂费时,需要行政人员的授权及机构法人身份的核认,一张根证书有效期可能长达二十年以上。在某些企业,也可能会在内部电脑自行安装企业自签的根证书,以支援内部网的企业级软件;但是这些证书可能未被广泛认可,只在企业内部适用。
中介证书
认证机构的一个重要任务就是为客户签发证书,虽然广泛认可的认证机构都已拥有根证书,相对应的私钥可用以签署其他证书,但因为密钥管理和行政考虑,一般会先行签发中介证书,才为客户作数位签署。中介证书的有效期会较根证书为短,并可能对不同类别的客户有不同的中介证书作分工。
TLS服务器证书
网站在互联网上提供服务时,域名就是服务器证书上主体,相关机构名称则写在组织或单位一栏上。证书和私钥会安装在服务器。客户端的软件(如浏览器)会执行认证路径验证算(Certification path validation algorithm)以确保安全,如果未能肯定加密通道是否安全(例如证书上的主体名称不对应网站域名、伺服器使用了自签证书、或加密算法不够强),可能会警告用户。
TLS客户端证书
客户端证书包含电子邮件地址或个人姓名,而不是主机名。客户端证书比较不常见,因为考虑到技术门槛及成本因素,通常都是由服务提供者验证客户身份,而不是依赖第三方认证机构。通常,需要使用到客户端证书的服务都是内部网的企业级软件,他们会设立自己的内部根证书,由企业的技术人员在企业内部的电脑安装相关客户端证书以便使用。在公开的互联网,大多数网站都是使用登入密码和Cookie来验证用户,而不是客户端证书。
根证书(自签证书)、中介证书和终端实体(TLS服务器/客户端)证书的形成如下信任链
证书一般遵从X.509格式规范
证书可以二进制或 Base64 形式储存,常见的文件扩展名有.cer、.crt、.der和.pem。如果把证书和私钥一起储存,则可以使用PKCS#12(.p12)格式。
我们在写对外 API 时,针对信息传递的安全考虑,做如下设计
我们使用 SHA256withRSA 进行签名,下面是一个Java简单例子
数字签名和数字证书究竟是什么?
需要准备的工具:makecert.exe、cert2spc.exe、pvk2pfx.exe、signtool.exe。
在MS的SDK6.0中有个证书生成工具makecert.exe, 你可以使用这个工具来生成测试用的证书。
第一步,生成一个自签名的根证书(issuer,签发者)。
>makecert -n \”CN=Root\” -r -sv RootIssuer.pvk RootIssuer.cer
这个时候,会弹出提示框,首先给RootIssuer.pvk文件设置私钥保护口令;
然后,再次输入这个口令用私钥(在RootIssuer.pvk文件中)来给公钥(在RootIssuer.cer文件中)加密。
第二步,使用这个证书签发一个子证书(使用者,subject)。
>makecert -n \”CN=Child\” -iv RootIssuer.pvk -ic RootIssuer.cer -sv ChildSubject.pvk ChildSubject.cer
此时,会弹出提示框先给这个子证书的私钥文件ChildSubject.pvk设置保护口令;
然后,输入这个子证书的私钥(在ChildSubject.pvk中)口令来保护子证书的公钥(在ChildSubject.cer中)。
接下来会提示输入根证书私钥(在RootIssuer.pvk中)口令来签发整个子证书(公钥和用户信息)。
如果你还要签发更多的子证书,类似的,使用这个证书来签发再下层的证书,前提是ChildSubject证书也可以用于签发(作为Issuer)用途。
备注:
(1)如果你需要一个交互证书,用于安全通信,那么,加入选项 -sky exchange;
(2)如果你需要一个签名证书来签发证书或者二进制文件,那么,加入选项 -sky signature.
(3)如果你需要一个客户端证书来标志你的身份,或者个人信息保护(电子邮件),那么,选项-n 中的E字段是不可缺少的。
举例:-n \”CN=公司名称, E=E-MAIL地址, O=组织名称, OU=组织单位, C=国家, S=省份(州), P=县城\”
其他辅助工具:
1) 公钥证书格式转换成SPC。 cert2spc.exe
>cert2spc TestRoot.cer TestRoot.spc
.spc 意思是 软件发布者证书(Software Pulisher Cerificate).
2) 将公钥证书和私钥合并成一个PFX格式的证书文件。pvk2pfx.exe
>pvk2pfx -pvk TestRoot.pvk -spc TestRoot.spc -pfx TestRoot.pfx
输入TestRoot.pvk的保护口令来合并.pvk和.spc文件,如果你不设置即将合并出来的TestRoot.pfx的保护口令的话,这个保护口令和输入文件TestRoot.pvk的保护口令一样。(备注:直接从cer文件也可以,不一定要得到SPC文件).
3) 签名工具。signtool.exe
二进制文件数字签名.为了保证二进制文件的完整性,数字签名是一个好的方法。
以下命令启动一个有图形界面的文件签名工具向导:
>signtool wizard

以下是命令行方式的签名:
>signtool sign /f \”pfx文件的全路径\” /p \”pfx文件的保护口令\” /t \”http://timestamp.verisign.com/scripts/timstamp.dll\” /d \”本次签名的描述\” \”被签名的程序的全路径\”
如何验证数字签名证书,有什么用途?
我们经常会见到数字签名和数字证书的身影,比如访问一些不安全的网站时,浏览器会提示,此网站的数字证书不可靠等。那么究竟什么是数字签名和数字证书呢?本文就将通过一个场景深入浅出的介绍数字签名和数字证书的概念!
Bob有两个密钥,一个叫公钥Public Key,一个叫私钥Private Key。
Bob的公钥是公之于众的,所有需要的人都可以获得公钥,但Bob的私钥是自己私有的。密钥用来加密信息,将一段可以理解阅读的明文信息,用密钥进行加密,变成一段‘乱码’。因此,只有持有正确密钥的人,才能重新将这段加密后的信息,也就是‘乱码’,恢复成可以理解阅读的真实信息。Bob的两个密钥,公钥和私钥都可以将信息进行加密,并且能用对应的密钥将信息解码,也就是说,如果用Bob的公钥将信息加密,那么可以并且只可以用Bob的私钥将信息解码,反之,如果用Bob的私钥将信息加密,那么可以且只可以用Bob的公钥将信息解码!
所以Bob就可以利用自己的公钥和私钥进行信息的加密传输!
比如,Susan想要和Bob进行通信,考虑到信息的安全性,Susan可以利用Bob公之于众的公钥对所要传输的信息进行加密。这样,Bob收到信息后,就可以用自己的私钥对信息进行解码。假设此时有人窃取了Susan传给Bob的信息,但是由于没有Bob的私钥,无法对信息进行解码,所以即使窃取了信息,也无法阅读理解。
但是虽然黑客们无法解码Susan传给Bob的信息,却可以对信息进行篡改,破坏原有的信息,这样Bob收到被篡改的信息之后,再用自己的私钥进行解码,就会与Susan本来想要传达的信息出现不一致,这样也就相当于破坏了Susan和Bob的信息传输!学术上,我们将这种行为称为破坏信息的完整性!通俗的说,就是我得不到的信息,你也别想得到!
所以,现在的问题就是,我们如何保证信息的完整性,也就是保证信息不被破坏,或者说,当信息被破坏之后,接收方可以识别出,这个时候的信息是被破坏过的,就将其丢弃。
数字签名就可以解决上述的问题!根据数字签名,接收方接收到信息之后,可以判断信息是否被破坏过,如果没有被破坏,就可以正确的解码,如果被破坏,就直接丢弃。
数字签名可以保证对信息的任何篡改都可以被发现,从而保证信息传输过程中的完整性。
那么数字签名是如何实现对完整性保证的呢?关键技术就是hash,也就是哈希技术。
首先,Bob先对将要传输的信息进行hash,得到一串独一无二的字符,通常把hash之后的内容称为 信息摘要message digest 。我们都知道,hash往往是不可逆的,就是说,我们无法根据hash后的内容推断出hash前的原文。同时,不同的原文,会造成不同的hash结果,并且结果的差异是巨大甚至毫无规律的。也就是说,对原文进行再细微的修改,得到的hash后的内容都会与未经修改的原文的hash内容大相径庭。这样就保证了黑客对原文的任何修改都会被发现!
Bob同时将hash后的信息摘要,用自己的私钥进行加密,这样就保证只有Bob的公钥才能对信息摘要进行正确的解码,这样就保证了信息摘要一定是来自Bob的,也就是起到了一个独一无二的签名的作用。
加密后的信息摘要实际就是数字签名的内容。
最后,Bob再将数字签名附加到原文信息的后面,这样就形成了一个完整的带数字签名的信息报文。
Bob将带数字签名的信息报文传输给Pat。
Pat接收到信息之后,先利用Bob的公钥对数字签名进行解码,得到信息摘要,如果成功解码,就说明数字签名是来自Bob的,因为数字签名是Bob利用自己的私钥进行加密的,只有Bob的公钥可以进行解密。然后,Pat将信息原文进行hash得到自己hash的信息摘要,再与之前解码数字签名得到的信息摘要进行对比,如果相同,就说明原文信息是完整的,没有被篡改,反之,则确认信息被破坏了。
似乎现在,利用公钥和私钥以及数字签名,我们可以保证信息传输过程中的私密性和完整性。但还存在一个问题,就是公钥分发的问题,我们如果保证Bob的公钥被正确的分发给了Susan或者Pat等人呢?假设现在有一个中间人,他劫取了Bob发给Pat的公钥,然后私自伪造了一个假的公钥并加上Bob的名字,发给了Pat,这样就导致Pat永远实际上就是在跟中间人通信,和Bob也实际上在跟中间人通信,但都以为在跟对方通信。因此,现在的问题就是,Pat如何确认收到的公钥真的是Bob的公钥,而不是别人伪造的!
这个问题,其实可以类比一下现实生活中的问题。我们知道,公钥和私钥是成对存在的,也就是一个人一般都有一对独有的公钥和私钥。就好像我们每个人都有一个独有的身份证,我们把公钥类比为现实中的身份证,当我们在面对一个陌生人的时候,我们为了信任对方,一般可以查看对方的身份证,但此时就存在一个和上面中间人问题一样的漏洞,就是万一对方给的身份证是一个假的伪造的身份证呢?也就是万一对方给的是一个假的公钥呢?我们怎么识别真伪?现实中,我们往往会有一个身份证真伪的识别器,一般公安局等机构会有,也就是我们可以利用身份证真伪的识别器确认这个身份证的真假。我们仔细思考这个机制,实际上就是引入了一个独立的第三方机制,国家作为一个独立的第三方,给我们每个人创建了一个身份证,当我们需要验证身份证的真伪的时候,我们只需要找这个独立的第三方提供的真伪鉴别服务就可以验证身份证的真伪。
所以,相似的我们解决公钥分发问题的思路也就是引入一个独立的权威的第三方机构。
假设现在有一个数字证书的权威认证中心,这个中心会给Bob创建一个数字证书,这个数字证书包括了Bob的一些信息以及Bob的公钥。
那么,此时,想要跟Bob进行通信的人,就可以检查Bob的数字证书,然后向权威的数字证书的认证中心,去认证这是不是真实的Bob的数字证书,如果是,就可以从数字证书中获取到Bob的公钥,然后进行安全的通信。同时,就像现实生活中一样,我们不管进行任何涉及到资金或者安全问题的时候,都需要出示自己的身份证,并且对方会验证你的身份证的真假,也就是说,一个持有假身份证的人,或者没有身份信息的人是获取不了他人的信任的。同理,在网络通信中,如果在数字证书的认证中心中查询不到信息,那么就说明这样的通信方是不安全的,是不值得信任的!另一方面,数字证书除了解决了公钥分发和身份认证的问题,还加强了安全性。
详细的利用数字证书的通信过程如下:
上述的公钥分发和数字签名验证的过程似乎很复杂,但实际上,就跟我们验证身份证真伪一样,我们通常有一个识别器,只要将身份证放上去就可以得到结果,后面的实际过程往往不需要我们关心,网络通信中也是如此,往往会提供一个友好的用户接口,想要验证数字签名或者数字证书,其实就类似于我们点击一下按钮一样简单!
什么是数字签名?简单来说,数字签名是公钥密码的逆应用:用私钥加密消息,用公钥解密消息。数字签名是为了证明对方发的信息并没有被更改过,但前提条件是你确认对方是可靠的,即你拥有的公钥确实是对方的公钥而不是其他人的公钥。而数字证书就是为了证明你拥有的公钥确实是对方的。
一、数字证书的用途
以上“数字签名”例子中,我们都默认了一个前提条件:女神拥有的确实是你的公钥,如果女神的公钥被别人调包了呢?继续上面的实例:如果女神的公钥被你的一个情敌调包换成情敌的公钥了,当你把表白和数字签名发给女神的过程中,情敌把信息拦截了,拦截后重新写了一份表白并用他自己的私钥生成数字签名(重复你的操作,只不过内容已经换成情敌的了)重新发给女神,这时女神并不知道“你”已经换成“情敌”了,那你就悲剧了哦。这时数字证书就起作用了,数字证书就是为了给女神证明发信人的身份的。
2.数字证书包含的内容
在现实生活里,为了证明我们身份,公安机关会给每个人颁发一个身份证。在信息世界里,数字证书就是对方的身份证。同样的,数字证书也有专门的发证机关Certificate Authority,简称CA。发证机关颁发的数字证书里包含以下基本内容:
1.证书颁发机关
2.证书持有者名称/服务器域名
3.证书有效期
4.证书签名算法(摘要算法和加密算法)
5.证书签名值
6.证书所有者加密算法
7.证书所有者公钥
二、数字证书如何验证
现实中要验证一个人的身份,首先核对这个人的身份证有效性,然后再核对本人相貌跟身份证上的照片是否一致。数字证书也是一样的验证思路:
1.验证数字证书有效性
数字证书里包含了发证机关对这张证书的数字签名,而浏览器默认内置了发证机关的公钥(暂且这么理解),拿到公钥后先解密证书的数字签名拿到证书的摘要,然后浏览器用证书的摘要算法重新计算下证书的摘要,最后比对这两者的值是否相等,如果相等证明这张数字证书确实是发证机关颁发的有效证书。
三、验证“相貌”
如何验证该证书的所有者就是跟浏览器正在对话的网站呢?
数字证书包含了web网站服务器的一个或者多个域名,浏览器会验证该域名跟正在对话的服务器的域名是否匹配(防止MITM)。
四、数字证书的级联
颁发证书的机构是可以有级联关系的,即A机构可以委派B机构颁发证书,B机构也可以委派C颁发证书,如果网站的证书是C颁发的,那么需要用B的证书去验证C颁发的证书,同理需要用A机构的证书去验证B颁发的证书,这个过程是递归的,A机构的证书被称为“根证书”。“根证书”是配置在我们电脑上,默认是安全的。
如果用户遇到的问题不能解决,可通过wosign官网客服网页链接寻求帮助,凡是选择wosign ssl证书的网站用户,wosign可提供免费一对一的ssl证书技术部署支持网页链接,免除后顾之忧。
以上就是关于数字签名证书是什么?全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!











