A. 手机软件签名证书怎么做
证书要来签名软件的。每一个手机串号,可以制作一个证书。 签名(sign):就是在应用程序的特定字段写入特定的标记信息,表示该软件已经通过了签署者的审核。 签署者对该软件的安全性负责。其中签名又大致分三种: 1. Symbian 签名。 即 Symbian(塞班)手机操作系统官方签名。通过了 Symbian 安全认证的软件才会获得 Symbian 的签名。该类软件有最高的安全级别。在手机上能正常安装/运行/且能实现软件提供的所有功能. 获得 Symbian签名需要软件作者直接和 Symbian 官方打交道,基于多方面的原因,并不是所有软件的作者都有能力获得这个认证的。 2. 作者签名。 软件作者在发布软件的时候就对软件进行了签名。这类软件可以在手机上安装运行(可能会遇到安全性警告,可跳过)。但不能实现那些“被特别限制”了的功能。如果某软件根本不涉及这类功能,那么软件作者也完全可能自己签名就行了。 还有一种可能就是软件虽然有某部分功能属于“被特别限制”的范围,但并不是主要功能。软件作者也可能发布一个“作者签名版”,这样的版本可以正常使用大部分功能,但会丧失一些特定功能。如“来电通”软件就有这样的版,几乎全部功能都可以使用,只是不能开机自启动。 3. 用户签名。 严格来说这个应该是属于“开发者签名”。因为 Symbian 为软件开发者提供一种“开发证书”,原意本来是让软件开发者作软件测试用的。这个“开发证书”是与作为测试用的机器的 IMEI 码挂钩的。使用这种证书签名的软件只能在该 IMEI 码对应的机器上使用,不能用于别的机器。 所谓的“自签名”其实就是利用了这个方式,说白了就是你说你是开发软件的,你提供你测试机器的 IMEI 码,Symbian 颁发给你一个“开发证书”,你用这个证书签名你的“测试软件”。你自己对你自己的“开发行为”负责!如此而已。 另外,开发证书自颁发日起有效期为半年.但在证书有效期内签署好了的程序的使用时限是没有限制的.
B. 关于数字签名的认证流程
从你的描述看,你对相关概念有一定了解,只不过还需要实际的感性认识。
数字签名的操作有两个:签名(此处为动词,指生成签名)、验证签名。
你说的数字签名的认证流程实际上是指验证签名的流程,你的叫法不够准确。
数字签名 是基于公私钥的,签名和验证签名的操作都主要是公私钥的加解密运算。
签名的流程是用私钥对原文做加密形成数字签名。
验证签名的流程是用公钥对数字签名做解密,然后将解密出的数据与原文做比较,如果一样,则签名验证成功,否则验证失败。
无论是Win7,还是Mac系统,都是这个原理和流程。Win7和Mac系统中都含有对数字证书和数字签名的支持,比如密钥库、加解密算法、证书库、接口等。
现在说说数字证书,数字证书中包含公钥,在做验证签名操作时,会使用到。而私钥是不在数字证书中的,私钥的位置根据证书类型的不同而不同(软件证书的私钥存放在电脑中,而其它证书的私钥是存放于智能卡中,比如usbkey),在生成签名时,会使用此私钥。
再来说说CA,CA负责对数字证书的管理,比如生成、废除、更新、补发等,所有数字证书都是由CA生成的。
最后说下“下载程序的数字签名认证”,也就是指对下载程序的数字签名进行验证,看看程序是否已经被篡改或破坏。
程序在上传到网络之前,先生成数字签名,并将签名数据和数字证书附在程序后面,一起上传到网络上。
程序下载后,取出附在程序后面的数字签名数据和数字证书中的公钥,然后进行验证签名的操作(也就是用公钥对签名数据做解密运算,然后比对解出来的数据与原程序是否一致)。
还有疑问否?
C. 如何进行数字签名
数字签名是实现电子签名的国际通用的手段,而在实践中,我们往往把数字签名与电子签章电子签名之间画上等号。因而,要问如何进行数学签名,其实也就是在问如何进行电子签章电子签名
我以微签为例子吧,简单的几步就可以用上电子签章。
1登录微签电子签章平台官网,用手机号免费注册登录:
是不是非常方便快捷呢?电脑端和手机端都可以使用,说再多也不如您亲自上微签官网注册一个账号来的实在,亲自体验一下数字签名怎么做。
D. 如何制作和应用数字签名证书
需要准备的工具: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 "本次签名的描述" "被签名的程序的全路径"
E. 怎么做签名证书和签名密钥
*^o^*专业手机证书制作,高速高效高品质!^_^
采纳回答后我帮你制作,完成之后立马发到您的邮箱!并且提供签名教程已经手机破解教程和玩机教程~
F. 如何给文档进行Pdf 证书签名呢 专家能告诉我怎么做吗
1、PDF 文档签名证书的出现有效防止了上述安全问题的发生,使用 PDF 文档签名证书可以进行身份签名或确认签名,签名后的文档可以向用户证实 PDF 文档签署人的真实身份,签署人的真实身份是通过权威的第三方进行审核并确认,这样便保护了 PDF 文档在传输的过程中没有被非法篡
改,从而使得签名后的 PDF 文档可以安全可靠的用于企业之间电子文档交换和电子合同签署等。
2、作为一家声誉卓着,备受信赖的CA中心和数字证书提供商,Entrust 目前主要提供以下 PDF 证书:个人签名 USB 证书、部门签名 USB 证书和部门签名 HSM 证书。通过Entrust 的 PDF 文档签名证书服务,将有效保护您的各式 PDF 文档,使其不会遭受非法篡改,并提高工作效率。 Entrust数字证书认证中心–提供全球可信的SSL、SSL证书、SSL数字证书、 增强型EVSSL证书、防范钓鱼网站、防黑客攻击、代码签名证书、服务器证书、微软代码签名认证、Symbian代码签名证书、数字签名证书、中文数字证书、PDF签名证书等服务。
3、网络 “亿创恒安” 提供免费的专业技术咨询。
G. 下载好证书应该如何签名和安装游戏
塞班不是有教程吗?
直接把那两个文件导入到签名工具里,然后打开要签名的软件 ,设置好输出位置 就行了
H. 如何:使用独立的 X.509 证书进行签名和加密
有银行专用电子签名版,私人也可以用手写电子板!
I. 一文弄懂关于证书,签名,ssl,android包签名机制。
所有的概念都基于一个非常重要的基础:
rsa 非对称加密算法 :
先感受下几个概念
PKI。
PKI是公钥基础设施(Public Key Infrastructure) 包括PKI策略、软硬件系统、证书机构CA、注册机构RA、证书发布系统和PKI应用等。
我们关注就俩东西: PKCS 证书机构CA 。前者是定义加密算法,签名,证书相关的各种事情采用的协议。后者可以为我们颁发权威的证书。
PKCS :
PKCS(The Public-Key Cryptography Standards )是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。RSA算法可以做加密、解密、签名、验证,还有RSA的密钥对存储。这些都需要标准来规范,如何输入,如何输出,如何存储等。
PKCS。全称是公钥密码学标准, 目前共发布过 15 个标准,这些标准都是协议。总结一下 就是对加密算法,签名,证书协议的描述。下面列举一些常用的协议,这些协议在本文都会对应上。
这些协议具体的实现就体现在openssl等工具中, 以及jdk工具keytool jdk java第三方库bouncycastle。
比如用openssl 如何生成公/私钥(PKCS#1)、签名(PKCS#1 )、签名请求文件(KCS#10)、 带口令的私钥(PKCS#8)。 含私钥的证书(PKCS#12)、证书库(PKCS#12)
其中涉及到算法的基础协议PKCS#1等,由于涉及到密码学原理所以我们并不需要深究它,只要知道怎么做就可以了。
现实中我们要解决这样一种情况:
客户端和服务器之间的数据要进行加密。需要两个达成同一个对称秘钥加密才行,那么这个秘钥如何生成,并在两边都能拿到,并保证传输过程中不被泄露。 这就用到非对称加密了。 后续的传输,就能用这个 对称秘钥来加密和解密了。
还有这样一个问题:
就是客户端如何判断服务端是否是合法的服务端。这就需要服务端有个id来证明它,而这个id 就是证书,而且必须是权威机构颁发的才能算是合法的。
因为客户端即浏览器,认定证书合法的规则必须通过第三方来确认 即ca颁发的证书。否则就我可能进了一个假网站。
而这两个问题 都是ssl协议要解决的内容。
所以ssl协议做了两件事情,一是验证身份,二是协商对称秘钥,并安全的传输。 而实现这个过程的关键数据模型就是证书, 通过证书中的ca对证书的签名,实现了身份验证,通过证书中的公钥,实现对对称秘钥加密,从而实现数据保密。 其实还顺手做了一件事情就是通过解密签名比对hash,保证了数据完整性。
明白ssl协议 首先明白几个重要的概念:
证书: 顾名思义就是提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,由权威公正的第三方机构,即CA(例如中国各地方的CA公司)中心签发的证书, 就是可以认定是合法身份的。客户端不需要证书。 证书是用来验证服务端的。
一般的证书都是x509格式证书,这是一种标准的证书,可以和其他证书类型互相转换。完整来说证书包含,证书的内容,包括 版本号, 证书序列号, hash算法, 发行者名称,有效期, 公钥算法,公钥,签名(证书原文以及原文hash一起签名)而这个内容以及格式 都是标准化的,即x509格式 是一种标准的格式。
签名: 就用私钥对一段数据进行加密,得到的密文。 这一段数据在证书的应用上就是 对证书原文+原文hash进行签名。
谁签的名,就是用谁的私钥进行加密。就像身份证一样, 合法的身份证我们都依据是政府签的,才不是假证, 那就是浏览器会有政府的公钥,通过校验(解密)签名,如果能够解密,就可以确定这个就是政府的签名。就对了。
hash算法 :对原始数据进行某种形式的信息提取,被提取出的信息就被称作原始数据的消息摘要。比如,MD5和SHA-1及其大量的变体。 hash算法具有不可逆性,无法从摘要中恢复出任何的原始消息。长度总是固定的。MD5算法摘要的消息有128个比特位,SHA-1算法摘要的消息最终有160比特位的输出。
ca机构: 权威证书颁发机构,浏览器存有ca的公钥,浏览器以此公钥来验证服务端证书的合法性。
证书的获取: 生成证书申请文件.csr(涉及到PKCS#10定义的规范)后向ca机构申请。 或者自己直接通过生成私钥就可以一步到位生成自签名证书。 自签名证书就是用自己的私钥来签名证书。
那么为了体现到 证书身份认证、数据完整、保密性三大特性 ,证书的简化模型可以认为包含以下两个要素:服务器公钥,ca的签名(被ca私钥加密过的证书原文+原文hash),
身份认证:
浏览器存有ca公钥,用ca公钥解密网站发给你的证书中的签名。如果能解密,说明该证书由ca颁发,证书合法。 否则浏览器就会报警告,问你是否信任这个证书,也就是这个网站。这时候的证书可以是任何人签发的,可以自己签发的。 但是中间人攻击。 完全伪造新的证书, 这就没有办法了。 所以还是信任证书的时候要谨慎。
数据完整:
如果你信任该证书的话,这时候就会用证书中的公钥去解密签名,如果是ca签发的证书,那么之前就已经通过ca的公钥去解密签名了。 然后得到证书hash,然后在浏览器重新对证书做hash,两者比对一致的话,说明证书数据没有被篡改。
保密性:
使用证书的公钥对对称秘钥加密保证传输安全,对称秘钥生成后,后续的传输会通过对称秘钥来在服务端和客户端的加解密。
那么ssl协议的具体过程就是:
4.网站接收浏览器发来的数据之后 使用自己的私钥校验签名,并对原文进行hash 与解密出的hash 做比对检查完整性。然后发送编码改变通知,服务器握手结束通知(所有内容做hash )。 发送给客户端校验。
5 客户端校验,校验成功后,之后就用 对称秘钥进行通信了。
总共的过程是 c-s-c- s-c 四次握手。
四次握手简单来说分别是:
1.请求获取证书
2.服务端返回证书,客户端验证了证书的合法性和完整性,同时生成了对称秘钥。
3.客户端把加密的 对称秘钥发给服务器。服务器检查真实性和完整性。
4.服务端返回握手结束通知,客户端再检查一次真实性和完整性。
前两次握手是明文, 后两次握手是密文。 所以都要检查身份真实性和数据完整性。
ca的作用:
ca起到一个权威中间人的角色,如果脱离了ca, 那么证书还是证书,还能加密,保证数据完整性。 但是无法应用在客户端去认定服务器身份合法这个场景下。
下面就详细说下 脱离了ca签发的证书的应用:
自签名证书:
证书如果没有权威机构的签名,就是没有权威机构给你签发身份证。 那么这时候身份认证的场景变了。
这时候的认证场景就变成了,不再是某个官方权威说了算,而是假设第一次碰到这个证书,会认为,这个证书与之捆绑的实体之间是合法的并做记录。如果当这个实体下次捆绑了另一个证书,那么就是非法的。
这种情况常用于android中安装和校验app的时候,会先假设第一次安装的是合法的应用,认定这个app证书中的公钥是合法的公钥。然后通过自签名的证书,校验签名,就能实现后续安装是否合法以及完整性。
android中的如何对app进行身份认定和不被篡改:
android系统在安装app时候会进行校验applicationId,applicationId 不同会认定为不同应用。相同应用,第二次安装会校验证书是否和之前app的证书相同,如果相同则两个包很可能来自同一个身份。 如果证书不同,也就是该包被另一个身份用自己的私钥重新签名过,就会拒绝安装。 然后通过公钥来解密签名,如果能解密,说明身份是ok的。否则拒绝安装。比对解密签名后的hash 与apk包内的cert.sf文件(该文件是apk内所有文件生成的hash文件)是否一致,如果相同则认定为没有被篡改。
android在提交应用商店的问题:
应用商店也会校验 后续的上传和第一次上传时的证书,以及类似上述的后续的一系列校验。防止合法的开发者平台被盗后,上传非法应用。
android在接入第三方sdk的问题:
接入第三方sdk 会提交applicationId 和 sha1 值。 这个sha1值就是对 证书原文的签名后的sha1,也就是证书指纹。这个证书是证书库里最初的那个证书(x509格式),而不是对apk签名后生成的证书(PKCS#7)。一般的证书签名的主体是证书原文本身,而对apk签名还额外会对apk所有文件生成的hash值文件(cert.sf)进行一次签名。
第三方平台会记录 applicationId 与sha1 的对应关系。 当有假冒app试图接入时候,由于会对app内的PKCS#7证书转换为原始的x509格式证书,重新生成sha1值,与用户提交sha1 比对, 如果相同则说明证书很可能是ok的。 因为sha1就是证书的指纹。 之后就会通过证书中的公钥来校验签名,从而最终确认身份合法性以及信息完整性。
第三方平台之所以需要用户去提交证书指纹sha1值,多了这一步,就意味着你的证书是可以更换的,一旦更换了证书,就必须提交新的指纹给我,然后我来做匹配。而应用商店没有这个功能, 一旦你的证书的私钥丢了, 那就必须重新建一个新的app。
总结来看证书的身份认定机制:
在ssl协议下,这种场景是 浏览器用于认定合法的服务器身份。 在自签名证书下,需要用户选择是否信任该证书。
在android app采用自签名证书的场景下, 证书起到了 假设第一次的证书合法,公钥合法,后续如果证书不一致或不能够完成签名校验,就是非法。
证书库:
证书库应该满足PKCS#12协议。 但是jdk提供了制作证书的工具keytool 可以生成keystore类型的证书库,后缀为jks。 keystore pk12可以通过keytool命令互相转换。
证书库是个证书的容器, 可以用来创建数字证书。 在keystore证书库中,所有的数字证书是以一条一条(采用别名alias区别)的形式存入证书库的。证书库中的证书格式为pk12,即包含私钥。 如果导出证书的话, 可以导出为x509不包含私钥的格式 或者pk12包含私钥的证书。 也可以也可以用-import参数加一个证书或证书链到信任证书。
android中一般都采用读取证书库的方式,通过证书库来创建一个证书,通过alias来区分。 所以在签名的时候,一个alias是一个证书,不同的alias是不同的证书,不要搞错了。
几个关系:
证书和非对称加密算法的关系:
证书代表一个身份的主体,包含了非对称秘钥体系中的公钥,以及用私钥对证书签名。这种组织结构,把非对称加密算法从加密的功能,拓宽到了用于身份认证,信息完整性上。这体现在了证书的作用。 本质还是利用了非对称加密算法的特性。
ssl协议和证书的关系。
因为证书解决了客户端对服务器的身份认证(自签名证书除外),同时也解决了加密,和信息完整性,所以ssl协议基于证书来实现。
J. 描述数据加密.数字签名及证书的简单原理和实现过程
我是客户端,你是服务器端,然后你我通信。
我们都无法确认对方确实就是我们想要进行通信的人,
因此我们各需要有一本由你我都信任的CA机构颁发的并且由CA机构已经盖了章(即签名)了的证书,该证书用来确认我们各自的身份,就好象我们的身份证。我们各自的证书都有公钥以及签名者(CA机构)等信息
通信时:我向你请求安全连接,然后你把你的证书发过来给我,接着我就进行验证,验证证书是否就是你的,即验证证书上是否有你用你自己私钥签的名,若有,则用你证书上的公钥加密我要发给你的信息,然后发过去给你,然后你就用你的私钥进行解密以获得我发给你的信息,若没有,断开连接
大概如此