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軟體結構開發,必須支持遠程印章管理,支持集中部署、分級管理。由於傳統實物印章的採取分級管理模式,因此,電子印章一般也會採取分級管理模式,也就是說各級獨立法人單位可以獨立管理自己內部的電子印章,進而還可以定義各個部門印章的管理人員。
電子印章管理子系統全面地反映了電子印章的管理思想,建立了與傳統實物印章相對應的電子印章管理思路,實現了電子印章從申請、審批、製作到使用授權、掛失、銷毀直至使用審計等整個生命周期的管理。