使用场景:
给一份合同约定内容,两端 互相 附属签字,之后生成的pdf文档中内容,签名不可修改
准备工作
申请证书,准备合同模板 放入项目中 调用
实现思路
- 生成暴露证书的接口
- 先生成 证书的合同和签名(因为在程序中,生成这些可以花费一些时间,在没有生成,这些 之前就执行下一步可能会出现没有必要的问题)
- 进行一端的签名和生成的pdf ,给另外端进行查看合同和附属签名 ,再次生成pdf合同
- 工具类代码生成电子签章能用到的工具类
具体的代码实现
/**
* 生成证书 接口
* 签证证书
*
*直接调用
*/
public void query_cert(){
try {
//项目文件路径
String upload_base= PropKit.use(AdminConst.ADMIN_CONFIG).get("upload_base");
String basePath= PathKit.getWebRootPath()+upload_base;
// CN: 名字与姓氏 OU : 组织单位名称
// O :组织名称 L : 城市或区域名称 E : 电子邮件
// ST: 州或省份名称 C: 单位的两字母国家代码
String issuerStr = "CN=在线医院,OU=gitbook研发部,O=gitbook有限公司,C=CN,E=gitbook@sina.com,L=北京,ST=北京";
String subjectStr = "CN=huangjinjin,OU=gitbook研发部,O=gitbook有限公司,C=CN,E=huangjinjin@sina.com,L=北京,ST=北京";
String certificateCRL = "https://gitbook.cn";
//固定的 ,必须是准确的证书
Map<String, byte[]> result = createCert("123456", issuerStr, subjectStr, certificateCRL);
FileOutputStream outPutStream = new FileOutputStream(basePath+"/keystore.p12"); // ca.jks
outPutStream.write(result.get("keyStoreData"));
outPutStream.close();
FileOutputStream fos = new FileOutputStream(new File(basePath+"/keystore.cer"));
fos.write(result.get("certificateData"));
fos.