这几天没事干,学校安排小学期做一个pki证书签发系统,班上的学霸美女一组,哈哈!虽然90%的活都是我做的,但是帮帮女生也是可以得嘛!扯远了!看看效果吧!用的是ssh框架做的一个签发证书网站,有普通用户申请证书,然后管理员利用密钥库生成证书!提供用户下载这个证书安装!看看效果图吧!不过对前台不精通的我也只能做一个这样的界面了,实验室专业做前台的给我改了改!看看效果吧!
效果差不多是这样的。
看看代码怎么实现的吧!首先是数据库,利用mysql数据库,
创建一个名字为pki的数据库!如下图是数据库表的基本字段
用户表和证书基本信息表
用户表
证书表
下面就是证书实现的的重点方法了!由于代码较多,就跳几个重要的贴上来吧!
首先是证书的action
package com.twj.action;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.Map;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Result;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Component;import com.opensymphony.xwork2.ActionContext;import com.twj.Enum.CAState;import com.twj.base.BaseAction;import com.twj.entity.Cabook;import com.twj.entity.User;import com.twj.service.CABookService;import com.twj.service.UserService;@Scope("prototype")@Component@Action(value="CABookAction",results={ @Result(name="login", location="/login.jsp"), @Result(name="success" ,type="redirectAction" ,location="CABookAction!select.action"), @Result(name="select" ,location="/ptuserselectcabook.jsp"), @Result(name="adminselect" ,location="/adminselect.jsp"), @Result(name="cainfo" ,location="/cabookinfo.jsp"), @Result(name="getbookcar" ,type="redirectAction",location="CABookAction!adminQueryNoParams.action")})public class CABookAction extends BaseAction {
/** * */ private static final long serialVersionUID = 1L; @Autowired private CABookService cABookService; @Autowired private UserService userService; private Cabook cabook; private String caCn; private String caOu; private String caO; private String caL; private String caSt; private String caC; private String caStorepass; private String caKeypass; private String caUrl; private Integer UId; private String caStart; private List<Cabook> list=new ArrayList<Cabook>(); private User user=new User(); //-------该写证书的啦 //普通用户申请证书 public String apply(){ user=(User) ActionContext.getContext().getSession().get("ptUser"); if (null==user) { System.out.println("--------------null---------"); return "login"; }else { cabook=new Cabook(); cabook.setCaC(caC); cabook.setCaCn(caCn); cabook.setUId(user.getUId()); cabook.setCaKeypass(caKeypass); cabook.setCaL(caL); cabook.setCaO(caO); cabook.setCaOu(caOu); cabook.setCaSt(caSt); cabook.setCaStart(CAState.NOPASS.getDiscribe()); cabook.setCaStorepass(caStorepass); Date d=new Date(); SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd"); String url=f.format(d); caUrl="d:/"+user.getUName()+url+".keystore"; cabook.setCaUrl(caUrl); cABookService.Save(cabook); genkey(); return "success"; } } //普通用户默认查询 public String selectdef(){ user=(User) ActionContext.getContext().getSession().get("ptUser"); list.clear(); list=cABookService.getBooKById(user.getUId());