电子合同:设计与实现思路

本贴最后更新于 2404 天前,其中的信息可能已经时移世异

前段时间刚刚完工域名解析系统,马不停蹄,公司要求马上开工电子合同项目的研发,相关的实现代码肯定不能写出来,但是这段时间总结下来的设计与实现思路还是可以写写的。希望能够对眼前看这篇文章的你有所帮助。

简述

何谓电子合同?

可以百度到的定义我这里就不说了,电子合同最关键的在于两个地方,一是签署合同人的数字签名,二是时间戳。

数字签名?时间戳?这个时间戳有什么关键的,java 几行代码就搞出来了么 ~

非也非也。

签署人的数字签名必须有国家认可的 CA 机构颁发个人证书来签署,时间戳也相应的由这家 CA 机构来提供。

简单的说,数字签名用来表明签署合同的是他本人,时间戳用来保证这份合同在签署之后内容没有变动。

设计与实现

数字签名的实现

首先,数字签名要搞清一个概念,签名的过程是我们将用户的个人证书签署在一份 PDF 文本上。所以实现的关键就在这两点上:

  • 获取个人证书

  • 将个人证书签署在 pdf 文本上。

个人证书的获取

首先对接到国内的一家 CA 机构,注意我们需要的产品是客户端个人证书,让对方提供至少两个接口:

  • 提交用户名称、身份证号码来生成一份用户私钥。

  • 调用用户私钥生成一份 pfx 证书。

得到 pfx 证书后,我们可以说个人证书获取成功了。

个人证书签署在 pdf 文本上

这一步的实现比较难,但可以通过 keytool 和 itext 这两个工具来实现。具体的实现步骤脱离代码没有办法讲清楚,但代码属于公司机密,我不予以分享。

时间戳的实现

时间戳很简单,一般的 CA 机构都直接提供免费的时间戳服务地址,比如沃通的地址为: http://timestamp.wosign.com/rfc3161,然后具体的调用和实现请参考对应机构提供的说明文档。

难点与解决思路

  • 个人证书的存放:可以利用阿里云提供的加密服务,因为他们提供了专门的硬件密码机。
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3167 引用 • 8207 回帖
  • SSH
    42 引用 • 51 回帖
  • 数字证书
    4 引用 • 8 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...