基于EJBCA系统建立的OCSP服务

基于EJBCA安装独立的OCSP服务器

环境:
centos 7
jdk 1.8
wildfly 10
ant 1.10.7
ejbca社区版 6.15.2.5
mysql 5.6
mysql连接包:mysql-connector-java-5.1.34-bin.jar,名字太长我修改成了mysql-java-client.jar。

1.为了方便,先创建一个用户和密码都是ejbca的mysql用户,再建立一个名为ejbca的数据库,其他也可以但是要对应的修改一些文件。

2.解压ejbca源码包,去${ejbca_home}/conf/ 目录下面修改对应的属性文件
//一下属性对应的属性值都是我本地的,需要对应的改成自己的。
ejbca.properties.sample ---> ejbca.properties(部署项目的路径以及cli工具的使用)
修改属性:
appserver.home=/opt/wildfly-10.0.0.Final(中间件的路径)
appserver.type=jboss(中间件类型)
database.properties.sample --->database.properties(数据库连接)
database.name=mysql
database.url=jdbc:mysql://192.168.44.150:3306/ejbca
database.driver=com.mysql.jdbc.Driver
database.username=ejbca
database.password=ejbca
ocsp.properties.sample ----->ocsp.properties(ocsp的简单配置)
ocsp.contextroot=/status (配置上下文)
ocsp.defaultresponder=CN=ManagementCA,O=EJBCA Sample,C=SE(默认的响应器,但是我们是外部的响应器,这个配不配都无所谓)

上面这些基础的配置完毕。

先运行wildfly,然后去wildfly管理后台设置一个数据源。第一次进入后台需要添加用户。添加完之后进入后台看到如下:

添加一个名为EjbcaDS的数据源。

运行${wildfly_home}/bin/jboss-cli.sh -c 连接上客户端

运行下面两个命令,具体不翻译了,在官网截出来的:https://doc.primekey.com/ejbca6152/ejbca-installations/ejbca-main-installation/application-servers/wildfly-10-jboss-eap-7-0

/subsystem=remoting/http-connector=http-remoting-connector:remove
/subsystem=remoting/http-connector=http-remoting-connector:add(connector-ref="remoting",security-realm="ApplicationRealm")
/socket-binding-group=standard-sockets/socket-binding=remoting:add(port="4447")
/subsystem=undertow/server=default-server/http-listener=remoting:add(socket-binding=remoting)
:reload


/subsystem=logging/logger=org.ejbca:add
/subsystem=logging/logger=org.ejbca:write-attribute(name=level, value=DEBUG)
/subsystem=logging/logger=org.cesecore:add
/subsystem=logging/logger=org.cesecore:write-attribute(name=level, value=DEBUG)

  

运行完毕之后,编译ejbca。
在${ejbca_home}目录下运行 ant clean deployear,编译并把对应的包放到wildfly中间件当中。
完整无错后,相当于运行一个简陋的ejbca实例了。

 3.创建CryptoToken

tips:需要你先有个可以签OCSP证书的CA证书,扩展项要求按照下图来封装此证书。如果使用ejbca来申请证书的话,克隆一个OCSPSIGN的模板就行。

在${ejbca_home}/bin目录下运行ejbca.sh这个shell文件可以看到可用参数

#创建名称为OCSPCryptoToken的软令牌,硬令牌需要密码机
./ejbca.sh cryptotoken create --token OCSPCryptoToken --type SoftCryptoToken --pin foo123 --autoactivate TRUE --exportkey TRUE
#在对应的token上创建密钥对
./ejbca.sh cryptotoken generatekey --token OCSPCryptoToken --alias ocspsignkey --keyspec 2048
#创建keybinding
./ejbca.sh keybind create --name OCSP_CA_KeyBinding --type OcspKeyBinding --sigalg SHA256WithRSA --token  OCSPCryptoToken --status DISABLED --alias ocspsignkey --cert null -nonexistingisgood=false -includecertchain=true
#创建csr申请OCSP签名证书
./ejbca.sh keybind gencsr OCSP_CA_KeyBinding csr.pem
#导入证书
./ejbca.sh keybind import OCSP_CA_KeyBinding /opt/ocsp/signer_cert.cer
#激活keybinding状态
./ejbca.sh keybind setstatus OCSP_CA_KeyBinding ACTIVE

  

拿到csr文件去申请证书,申请到的证书需要导入CertificateData,因为是验证证书链,所以CA的证书也要在CertificateData这个表。

可以使用openssl命令自签一个client_ca.cer的证书,然后拿上面csr.pem去client_ca.cer签发一个证书cc1.cer,然后分别导入这两个证书到CertificateData这个数据库表。

(本例子使用的证书是用ejbca实例生成的)

以下是验证的图。

以上是记录配置基于EJBCA的OCSP服务,中间还有很多OCSP属性暂时还不了解。记录以下配置过程。

原文地址:https://www.cnblogs.com/davenzeng/p/12457100.html