EJBCA/使用EJBCA证书服务的工作整理
EJBCA是一个全功能的CA系统软件,它基于J2EE技术,并提供了一个强大的、高性能并基于组件的CA。EJBCA兼具灵活性和平台独立性,能够独立使用,也能和任何J2EE 应用程序集成。
EJBCA+JBOSS安装部署[ ]
版本:Jboss-4.0.4.GA+EJBCA_3_4_2
EJBCA从4.x开始支持Web service。 jboss-4.2.0有某些改动,导致ejbca_3_4_1不能读取jboss的版本信息。
ejbca3.4.2开始支持md5WithRSAEncryption进行CA签名
安装过程[ ]
- 设置系统变量JBOSS_HOME为后jboss所在的目录。
- 修改ejbca_3_4_2/conf/ejbca.properties.sample为ejbca.properties,可以修改里面的配置,也可以不改。
- 到ejbca_3_4_2目录下 ant bootstrap
- ant j2ee:run 启动jboss
- ant install 生成了tomcat服务器证书,浏览器证书。注意按提示输入。特别是服务器证书的CN必须是安装机器的域名,按默认的话则会导致只有包含localhost的URL能访问,否则抛出异常:java.io.IOException: HTTPS hostname wrong: should be <xxx>
- 复制并关闭jboss,ant deploy部署ejbca
- 在浏览器里面导入ejbca_3_4_1/p12/superadmin.p12证书,密码默认是ejbca
- ant j2ee:run,重新启动jboss
- 打开浏览器,输入https://localhost:8443/ejbca就可以通过web方式管理CA了!
GOS中使用[ ]
在GOS中使用,一般要新建一个CA,然后使用该CA签发证书。注意要选中Use PrintableString encoding in DN选项
- 在浏览器中,打开地址https://localhost:8443/ejbca/adminweb/index.jsp,
- 创建新CA,CA Functions ->Edit Certificate Authorities 下端 输入新CA名字 ICTCA 然后点击create
- 在subjectDN 输入:CN=ict,O=ICT,C=CN
- Signed by 选 AdminCA1
- Validity (Days) 输入 3650
- Use PrintableString encoding in DN选中CRL Expire Period (Hours)填 48
- 然后提交,新的CA就创建完成。
手工获取证书[ ]
用JDK中的keytool生成证书请求(X代理安装的盘符):
X:\my_jars\cert\c824>keytool -genkey -dname "CN=zjc,OU=Grid,O=ICT,L=BJ,C=CN" -keypass zhujianchao -keystore _zjc.jks -storetype JK S -storepass zhujianchao -keyalg RSA -keysize 512 -sigalg "sha1withRSA"
X:\my_jars\cert\c824>keytool -certreq -keypass zhujianchao -keystore _zjc.jks -storepass zhujianchao -storetype JKS -file z_req.pe m -sigalg "sha1withRSA"
新建用户,注意CN,OU等等DN属性要与keytool中的一致。
然后到ejbca 的页面:
https://localhost:8443/ejbca/publicweb/apply/apply_man.jsp
填入用户名、密码和上面生成的z_req.pem的内容
下载CA签名的证书cert.pem.
将cert.pem和_zjc.jks中包含的私钥签出代理证书,用proxyInit工具。
另外,建议使用firefox浏览器,若出现报错信息比较详细
通过web service接口使用EJBCA签发证书[ ]
1)创建新的管理员用户,进入管理页面https://localhost:8443/ejbca/adminweb/index.jsp
- Administration-->RA Functions Add End Entity 添加一个user, 假设用户名为clientAdmin,密码foo123,
- CA选最初始的CA(也是给tomcat容器颁发证书的CA,不然tomcat不会通过验证,报错为 javax.xml.ws.WebServiceException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target),
- Token选jks file,
- Administrator选中。
2)到publicweb-->certEnrollment-->fetch a server generated key store.填入刚才创建的用户的用户名和密码,下载keystore 选1024长度的证书,假设名字为clientAdmin.jks 3)Edit Administrator Privileges 把新建的用户(clientAdmin)加入Administrator组。 4)按http://ejbca.org/manual.html#Additional%20howtos添加相应CA的access rules,一般把所有的权限都加上即可。 5)设定IP和主机名映射
若CA服务器所在的主机没有域名,可以在客户端的主机设定ip到主机名的映射:如我们在ant install步骤时设定的Web容器证书的CN是cook.net,则我们在客户端Windows机器修改%WINDOWS%\system32\drivers\etc\hosts 增加
10.61.0.93 cook.net
如果是linux,则用root身份登陆后 修改/etc/hosts 增加
10.61.0.93 cook.net
6)试用EJBCA自带的客户端工具:把第二步获得的证书放在ejbca_3_4_1\dist\ejbcawscli\,编辑ejbcawsracli.properties,特别要注意 ejbcawsracli.url 中的hostname需要跟Web容器证书的CN一致(Web容器证书在ant intall时生成),否则报错java.io.IOException: HTTPS hostname wrong: should be <xxx>
到ejbca_3_4_1\dist\ejbcawscli\目录,执行ejbcawsracli.cmd finduser USERNAME Equals wsadmin,这个命令通过调用web service,查询是否有wsadmin这个用户。更多的命令可以通过不带参数执行ejbcawsracli.cmd 查看
7)使用我们开发的genCert证书工具包,批量生成私钥、证书、代理证书
- 下载/home/gos2/ICTCA/genCert到客户主机,也可以直接在原位置操作,只要这台机器知道cook.net对应到EJBCA服务器的IP地址(同第5步设置)
- 把第二步获得的证书clientAdmin.jks放在该目录下
- 修改genCert目录下caclient.properties配置文件
- 填上我们创建的新CA的名字:caName=zjcCA
- 填上CA服务器web服务的URL,注意使用域名而不是IP:caServUrl=https://cook.net:8443/ejbca/ejbcaws/ejbcaws?wsdl
- 填上jks证书文件:jksFile=clientAdmin.jks
- 证书密码:jksPass=foo123
- 然后执行genCert.sh即可
参考来源[ ]
http://read.newbooks.com.cn/info/130101.html
EJBCA使用手册导航 | ||||
---|---|---|---|---|
|