前一段时间折腾了一下PKI,用EJBCA在研究院内网搭建了一个CA,目前是提供给手机端(安卓和IOS)来和服务器端(nginx + Java应用)做安全连接的(客户端和服务器端双向认证)
由于EJBCA官方的安装文档太不靠谱了,按照官方的文档来做的话会遇到各种坑, 所以记录一下我安装的过程.希望能给用到的人有一点帮助.
这里也贴一下官方的文档地址:https://www.ejbca.org/docs/installation.html
环境和所依赖的软件包: Ubuntu 16.04 LTS, ORACLE JDK7, ANT,ejbca_ce_6.3.11,wildfly8,PostgreSQL9.4
安装过程大概分为几个步骤(jdk和Ant,postgresql数据库的安装略过)
1.安装和启动wildfly服务器
2.在postgresql中新建一个数据库
3.配置wildfly的数据源
4.在wildfly的命令行接口中执行一些初始化命令(清理SSL,设置日志级别等)
5.修改ejbca的默认设置
6.使用ant命令编译和部署ejbca,并copy服务器端证书到正确的位置
7.在wildfly的命令行接口中配置https等
以下是具体的命令,假定ejbca解压之后的位置是在 /opt/pki/ejbca_ce_6_3_1_1,wildfly解压之后的位置是: /opt/pki/wildfly-8.0.0.Final
安装和启动wildfly服务器
解压wildfly的安装包之后进步 bin目录,以standalone方式启动wildfly: nohup ./standalone.sh > jboss.log 2>&1 &
新建数据库名为ejbca的数据库
配置wildfly的数据源
首先将postgresql的驱动包放入wildfly的deploy目录进行部署
然后进入jboss的命令行接口(在wildfly的bin目录下执行 ./jboss-cli.sh -c 命令进入,我们之后的一些操作也是在这一命令行接口中执行的)
执行增加数据源的操作:
data-source add --name=ejbcads --driver-name="postgresql-9.3.jar" --connection-url="jdbc:postgresql://192.168.171.129:5432/ejbca" --jndi-name="java:/EjbcaDS" --use-ccm=true --driver-class="org.postgresql.Driver" --user-name="postgres" --password="${your password}" --validate-on-match=true --background-validation=false --prepared-statements-cache-size= --share-prepared-statements=true --min-pool-size= --max-pool-size= --pool-prefill=true --transaction-isolation=TRANSACTION_READ_COMMITTED --check-valid-connection-sql="select 1;"
在wildfly的命令行接口中执行一些初始化命令(清理SSL,设置日志级别等)
/socket-binding-group=standard-sockets/socket-binding=remoting:remove
/subsystem=undertow/server=default-server/http-listener=remoting:remove
/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) /core-service=management/security-realm=SSLRealm/authentication=truststore:remove
/core-service=management/security-realm=SSLRealm/server-identity=ssl:remove
/core-service=management/security-realm=SSLRealm:remove
/socket-binding-group=standard-sockets/socket-binding=httpspub:remove
/subsystem=undertow/server=default-server/https-listener=httpspub:remove
/socket-binding-group=standard-sockets/socket-binding=httpspriv:remove
/subsystem=undertow/server=default-server/https-listener=httpspriv:remove
/socket-binding-group=standard-sockets/socket-binding=http:remove
/subsystem=undertow/server=default-server/http-listener=http:remove
/subsystem=undertow/server=default-server/http-listener=default:remove
/system-property=org.apache.catalina.connector.URI_ENCODING:remove
/system-property=org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING:remove
/interfaces=/interface=http:remove
/interfaces=/interface=httpspub:remove
/interfaces=/interface=httpspriv:remove
:reload
修改ejbca的默认配置
解压ejbca安装包,并进入解压之后的文件夹(/opt/pki/ejbca_ce_6_3_1_1)
conf目录中是ejbca的配置文件,在build和生成CA的时候会读取这个文件中的一些设置,里边的配置文件都是以.sample结尾的,如果我们要修改默认的配置就要把需要修改的文件重命名,吧.sample去掉
我们需要修改一下几个文件:
ejbca.properties(mv ejbca.properties.sample ejbca.properties)
设置 appserver.home 的值(就是应用服务器的安装位置,对于我们来说是 /opt/pki/wildfly-8.0.0.Final)
web.properties(mv web.properties.sample web.properties)
这个文件里设置CA的超级管理员的证书密码,以及给应用服务器生成的服务器端证书的证书密码,和CA的truststory的密码等,这些密码的设置我们可以根据需要设置,或者保持默认的配置,需要注意的是httpsserver.hostname,这个要和后边的alias相对应,我的ip地址为192.168.171.129,我们设置为192.168.171.129
database.properties(mv database.properties.sample database.properties)
设置数据库的类型,驱动程序,url,用户名和密码等
install.properties(mv install.properties.sample install.properties)
设置CA的名称,加密方式等
使用ant命令编译和部署ejbca,并copy服务器端证书到正确的位置
到ejbca目录下(对于我们来说是 /opt/pki/ejbca_ce_6_3_1_1)依次执行以下命令:
ant clean deployear
ant runinstall
ant deploy-keystore
在ejbca目录下会生成superAdmin.p12,truststroe.jks,和tomcat.jks
superAdmin.p12是超级管理员的证书,我们访问ejbca的web管理页面和调用ejbca提供的RA接口的时候回用到这个证书
truststore.jks提供给客户端来认证服务器端时用的(服务器端认证客户端证书比较常用,做双向认证的时候会用到客户端对服务器端的认证)
tomcat.jks是部署在wildfly上的服务器端证书,用于服务器端启用SSL
在wildfly的命令行接口中配置https等
/interfaces=/interface=http:add(inet-address="0.0.0.0")
/interfaces=/interface=httpspub:add(inet-address="0.0.0.0")
/interfaces=/interface=httpspriv:add(inet-address="0.0.0.0")
/socket-binding-group=standard-sockets/socket-binding=http:add(port="",interface="http")
/subsystem=undertow/server=default-server/http-listener=http:add(socket-binding=http)
/subsystem=undertow/server=default-server/http-listener=http:write-attribute(name=redirect-socket, value="httpspriv")
--官方文档上此时需要reload,但是不要在此时执行reload/core-service=management/security-realm=SSLRealm:add()
/core-service=management/security-realm=SSLRealm/server-identity=ssl:add(keystore-path="${jboss.server.config.dir}/keystore/keystore.jks", keystore-password="serverpwd", alias="192.168.171.129")
/core-service=management/security-realm=SSLRealm/authentication=truststore:add(keystore-path="${jboss.server.config.dir}/keystore/truststore.jks", keystore-password="changeit")
/socket-binding-group=standard-sockets/socket-binding=httpspriv:add(port="",interface="httpspriv")
/subsystem=undertow/server=default-server/https-listener=httpspriv:add(socket-binding=httpspriv, security-realm="SSLRealm", verify-client=REQUIRED)
/socket-binding-group=standard-sockets/socket-binding=httpspub:add(port="", interface="httpspub")
/subsystem=undertow/server=default-server/https-listener=httpspub:add(socket-binding=httpspub, security-realm="SSLRealm")
-- 官文文档上说此时需要relaod,但是不要reload /system-property=org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH:add(value=true)
/system-property=org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH:add(value=true)
/system-property=org.apache.catalina.connector.URI_ENCODING:add(value="UTF-8")
/system-property=org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING:add(value=true)
/subsystem=webservices:write-attribute(name=wsdl-host, value=jbossws.undefined.host)
/subsystem=webservices:write-attribute(name=modify-wsdl-address, value=true) --- 防止JSF报错
/subsystem=weld:write-attribute(name=require-bean-descriptor,value=true)
--启用AJP: /subsystem=undertow/server=default-server/ajp-listener=ajp-listener:add(socket-binding=ajp, scheme=https, enabled=true)
:reload
此时将超级管理员的证书导入浏览器,访问ejbca提供的web管理员页面(对于我们来说,这个地址是https://192.168.171.129:8443/ejbca/adminweb)
如果可以顺利访问的话我们的安装就成功了.
EJBCA的安装(基于Ubuntu 16.04 LTS + wildfly8 + ejbca6.3.11 + jdk7)的更多相关文章
-
Ubuntu 16.04 LTS安装好需要设置的15件事(喜欢新版本)
看到这篇文章说明你已经从老版本升级到 Ubuntu 16.04 或进行了全新安装,在安装好 Ubuntu 16.04 LTS 之后建议大家先做如下 15 件事.无论你是刚加入 Ubuntu 行列的新用 ...
-
Ubuntu 16.04 LTS安装好之后需要做的15件事
看到这篇文章说明你已经从老版本升级到 Ubuntu 16.04 或进行了全新安装,在安装好 Ubuntu 16.04 LTS 之后建议大家先做如下 15 件事.无论你是刚加入 Ubuntu 行列的新用 ...
-
Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel
Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel 1.MySQL安装[安装 MariaDB]MariaDB是MySQL的一个分支首 ...
-
Ubuntu 16.04 LTS U盘安装要点
一.UltraISO UltraISO是一款功能强大而又方便实用的光盘映像文件制作/编辑/转换工具,它可以直接编辑ISO文件和从ISO中提取文件和目录,也可以从CD-ROM制作光盘映像或者将硬盘上的文 ...
-
Ubuntu 16.04 LTS安装 TeamViewer
Ubuntu 16.04 LTS安装 TeamViewer 64位Ubuntu 16.04系统需要添加32位架构支持,命令如下. sudo dpkg --add-architecture i3 ...
-
Ubuntu 16.04 LTS 安装 miniconda
Ubuntu 16.04 LTS 安装 miniconda 下载 miniocnda 的 bash 文件下载链接 https://conda.io/miniconda.html ,我选择的是 64-b ...
-
Ubuntu 16.04 LTS 降级安装GCC 4.8
转载自https://www.linuxidc.com/Linux/2017-03/142299.htm Ubuntu 16.04 LTS 降级安装GCC 4.8 [日期:2017-03-28] 来源 ...
-
Ubuntu 16.04 LTS 安装libvips出现”Package vips was not found in the pkg-config search path”
使用libvips来操作图像,libvips的部署参考一个Node.js工程:https://github.com/lovell/sharp 在MAC下安装很顺利,到Linux环境下(Ubuntu 1 ...
-
Ubuntu 16.04 LTS安装Docker并使用加速器
参考优酷:http://v.youku.com/v_show/id_XMTkxOTYwODcxNg==.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2 首 ...
随机推荐
-
BZOJ2037: [Sdoi2008]Sue的小球
Description Sue 和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海 盗,而是要收集空中漂浮 ...
-
C#图片压缩处理算法
原文链接:http://blog.csdn.net/szstephenzhou/article/details/38900345
-
6. Configure Compute services
Controller Node: 1. sudo apt-get install nova-api nova-cert nova-conductor nova-consoleauth nova-nov ...
-
用CSS样式截取字符串,多的用省略号表示
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
-
转!!URL和URI区别
URI,URL,URN 从上面的那幅图可以看出来,一共有三个不同的概念URI,URL,URN.这讨论这样的问题时,最好的方法就是回到原点啊,这里我们在RFC 3986: Uniform Resourc ...
-
java 数据库两种连接方法
package jdbc; import java.sql.*; public class ConnectionDemo2 { public static final String DBDRIVER= ...
-
6、iOS快速枚举
今天在写程序的时候想在当前视图跳转的时候释放掉当前视图上面add的一些子视图.因为add的子视图有些是在别的类里面add进来的,当前页面不知道自己当前有哪几个类型的子视图.这样,我就想到了用循环遍历来 ...
-
vuejs2.0使用Sortable.js实现的拖拽功能
简介 在使用vue1.x之前的版本的时候,页面中的拖拽功能,我在项目中是直接用的jquery ui中的sortable.js,只是在拖拽完成后,在update的回调函数中又重新排序了存放数据的数组.但 ...
-
s2-045漏洞批量检测工具
今天晚上看老铁们在群里就这个st2-045漏洞讨论得火热,个人不太喜欢日站,本来想直接写个批量挂马的东西,但是想想还是算了,如果你有兴趣,改改也很容易,反正不关我的事 测试图 2017-3-8更新 增 ...
-
WordPress更换主题空白问题
刚才尝试着更换了一个主题,后来发现预览主页的时候是一片空白.查了很多资料,有说是index.php的权限问题,有说是插件问题,有说是UTL-8编码的问题,我都试过了,发现都不行,后来仔细研究了一下,发 ...