A. 【第14期】springboot: pdf电子签章
上期讲述了pdf文档的操作,这期讲述对pdf进行电子签章,公司的一个小业务,主要实现 1)线上登记学员信息 》2)线上付款 》 3)电子签名 》4)生成带有公司电子签章的pdf收据
线上付款和电子签名我会在后续章节讲述,这期讲述pdf电子签章
一、申请电子印章
二、生成PKCS12证书
1. PKCS介绍
PKCS:The Public-Key Cryptography Standards (简称PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。
到1999年底,PKCS已经公布了以下标准:
PKCS#1:定义RSA公开密钥算法加密和签名机制,主要用于组织PKCS#7中所描述的数字签名和数字信封[22]。
PKCS#3:定义Diffie-Hellman密钥交换协议[23]。
PKCS#5:描述一种利用从口令派生出来的安全密钥加密字符串的方法。使用MD2或MD5 从口令中派生密钥,并采用DES-CBC模式加密。主要用于加密从一个计算机传送到另一个计算机的私人密钥,不能用于加密消息[24]。
PKCS#6:描述了公钥证书的标准语法,主要描述X.509证书的扩展格式[25]。
PKCS#7:定义一种通用的消息语法,包括数字签名和加密等用于增强的加密机制,PKCS#7与PEM兼容,所以不需其他密码操作,就可以将加密的消息转换成PEM消息[26]。
PKCS#8:描述私有密钥信息格式,该信息包括公开密钥算法的私有密钥以及可选的属性集等[27]。
PKCS#9:定义一些用于PKCS#6证书扩展、PKCS#7数字签名和PKCS#8私钥加密信息的属性类型[28]。
PKCS#10:描述证书请求语法[29]。
PKCS#11:称为Cyptoki,定义了一套独立于技术的程序设计接口,用于智能卡和PCMCIA卡之类的加密设备[30]。
PKCS#12:描述个人信息交换语法标准。描述了将用户公钥、私钥、证书和其他相关信息打包的语法[31]。
PKCS#13:椭圆曲线密码体制标准[32]。
PKCS#14:伪随机数生成标准。
PKCS#15:密码令牌信息格式标准[33]。
PKCS12也就是以上标准的PKCS#12,主要用来描述个人身份信息
2、java生成PKCS12证书并进行存贮
生成的文件keystore.cer和keystore.p12放在自己项目的配置文件中,后面调用。
三、电子签章
2. 签名工具类SignPdf
3. 然后在业务中调用即可。
B. 电子签名系统集成推荐
2017年移动信息化研究中心发布的研究报告显示,目前国内第三方电子签名厂商呈现“三分天下”的态势。
阵营1:互联网创业公司推出的第三方电子合同SaaS平台
伴随着电子合同平台的市场热潮,出身于律师事务所、数据安全、互联网等企业的创业者开始抛头露脸,分享电子合同领域的大蛋糕。这些互联网电子合同平台,系统实现了在线电子签名、电子合同签署,电子合同管理、电子合同存证等功能,并在一定的领域有先发制人的优势。如法大大、云签、上上签、契约锁、云合同、文签、领签、1号签等第三方电子合同平台。
阵营2:老牌电子签章或数据保全企业转型推出的第三方电子合同SaaS平台
这类电子合同平台早期从事电子印章,主要提供可视化图章加时间戳服务的电子合同签名技术,随着电子合同平台的市场热潮,成立了独立的电子合同运营平台。如e签宝、易云章、君子签、一签通等第三方电子合同平台。
阵营3:国内CA认证机构推出的第三方电子合同SaaS平台
CA机构,又称为证书授权中心,作为网络营销交易中受信任的第三方,承担网上安全交易认证服务、签发数字证书、确认用户身份的服务机构,是一个具有权威性、公正性的第三方。如CFCA、安心签、诚信签、大家签等第三方电子合同平台。
C. 什么是数字签名举例说明求解
所谓"数字签名"就是通过某种密码运算生成一系列符号及代码组成电子密码进行签名,来代替书写签名或印章,对于这种电子式的签名还可进行技术验证,其验证的准确度是一般手工签名和图章的验证而无法比拟的。"数字签名"是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。
数字签名在ISO7498-2标准中定义为:"附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造"。美国电子签名标准(DSS,FIPS186-2)对数字签名作了如下解释:"利用一套规则和一个参数对数据计算所得的结果,用此结果能够确认签名者的身份和数据的完整性"。按上述定义PKI(Public Key Infrastructino 公钥基础设施)提供可以提供数据单元的密码变换,并能使接收者判断数据来源及对数据进行验证。
PKI的核心执行机构是电子认证服务提供者,即通称为认证机构CA(Certificate Authority),PKI签名的核心元素是由CA签发的数字证书。它所提供的PKI服务就是认证、数据完整性、数据保密性和不可否认性。它的作法就是利用证书公钥和与之对应的私钥进行加/解密,并产生对数字电文的签名及验证签名。数字签名是利用公钥密码技术和其他密码算法生成一系列符号及代码组成电子密码进行签名,来代替书写签名和印章;这种电子式的签名还可进行技术验证,其验证的准确度是在物理世界中对手工签名和图章的验证是无法比拟的。这种签名方法可在很大的可信PKI域人群中进行认证,或在多个可信的PKI域中进行交*认证,它特别适用于互联网和广域网上的安全认证和传输。
“数字签名”与普通文本签名的最大区别在于,它可以使用个性鲜明的图形文件,你只要利用扫描仪或作图工具将你的个性签名、印章甚至相片等,制作成BMP文件,就可以当做“数字签名”的素材。
目前可以提供“数字签名”功能的软件很多,用法和原理都大同小异,其中比较常用的有“ OnSign”。安装“OnSign”后,在Word、Outlook等程序的工具栏上,就会出现,“OnSign”的快捷按钮,每次使用时,需输入自己的密码,以确保他人无法盗用。
对于使用了“OnSign”寄出的文件,收件人也需要安装“OnSign”或“OnSign Viewer”,这样才具备了识别“数字签名”的功能。根据“OnSign”的设计,任何文件内容的窜改与拦截,都会让签名失效。因此当对方识别出你的“数字签名”,就能确定这份文件是由你本人所发出的,并且中途没有被窜改或拦截过。当然如果收件人还不放心,也可以单击“数字签名”上的蓝色问号,“OnSign”就会再次自动检查,如果文件有问题,“数字签名”上就会出现红色的警告标志。
在电子邮件使用频繁的网络时代,使用好“数字签名”,就像传统信件中的“挂号信”,无疑为网络传输文件的安全又增加了一道保护屏障。
例子说明:现在我们就转入正题了。JAVA的数字签名类封装在Signature类(java.security.Signature)中。
接下来,我会编写三个功能(即三个Java类):
D. 电子印章系统的简介
电子印章管理系统与电子签章系统类似主要是完成电子印章的申请、审批、制作以及电子印章的发放、授权/再授权、挂失/取消挂失以及电子印章的销毁等的管理,以及对电子印章的印模图片库进行维护和管理。同时提供电子印章使用审计管理功能——详细记录了签章人在何时、何处加盖过哪个电子印章。
电子印章管理子系统采用“用户—角色—权限”三维权限管理模型,可以给不同的人赋予不同的角色,进而分配不同的使用权限,这样可以将平台管理、印章申请、印章制作、印章管理、印章使用等权限分配给不同人员,从而从流程和权限上加强印章安全管理,这样从印章管理的角度也能确保印章来源的真实、可靠。 可以根据自己本身的需要自定义角色,以满足不同的管理需求。
电子印章管理子系统一般采用JAVA语言、J2EE技术框架和B/S软件结构开发,必须支持远程印章管理,支持集中部署、分级管理。由于传统实物印章的采取分级管理模式,因此,电子印章一般也会采取分级管理模式,也就是说各级独立法人单位可以独立管理自己内部的电子印章,进而还可以定义各个部门印章的管理人员。
电子印章管理子系统全面地反映了电子印章的管理思想,建立了与传统实物印章相对应的电子印章管理思路,实现了电子印章从申请、审批、制作到使用授权、挂失、销毁直至使用审计等整个生命周期的管理。