2018-01-12 EJBCA 在 Centos7上安装

声明:本文转载自https://enginx.cn

0x01 前言

我一直都自行签发数字证书并部署在测试和生产环境中,因为商业的CA非常昂贵,同时我也没有相应的资质申请。管理自签发的数字证书也是一个发问题,在这里,我使用EJBCA。

在过去很长的一段时间里我都是随心所欲地签发私有证书,因为服务于服务之间都需要用到数字证书,这导致我需要维护的证书越来越多,而且存在很大的风险。

为了方便管理,我找到一款开源免费的CA管理系统:EJBCA。它可以管理CA与各级证书,签发和吊销证书,同时还支持CRL与OCSP。

0x02 准备

我将在centos7上部署配置这个系统,过程不算难,但因为网络的关系可能需要较长的时间。

EJBCA基于java,最新版的EJBCA需要用到JBoss EAP 7作为基础部署环境,同时你还需要一个mariadb存储数据。当然你还可以选择其他的数据库,具体请参考以下的安装指引:

在配置mariadb的时候请注意编码要为utf-8,以下是我数据库的信息:

  • mariadb for EJBCA
    • host:10.1.1.14
    • dbname:ejbca
    • username:ejbca
    • passwd:ejbca

但在实际安装中,我发现最新版的JBoss EAP 7会导致EJBCA部署失败,所以我选择使用JBoss EAP 6.4.0这个版本,JBoss EAP可通过以下地址下载:

下载的时候请下载 Installer:

image

JBoss EAP的下载需要一个账户,在非商业使用环境中是免费的。

最后还需要用到ant命令,请使用以下命令安装:

[root@ejbca  ~]# yum install ant -y
image

准备好之后,应该会有这两个文件:

1. [root@ejbca  ~]# ll -h /root/ejbca/
2. total  211M
3. -rw-r--r--  1  root root  33M  Jul  22  22:43  ejbca_ce_6_5.0.5.zip
4. -rw-r--r--  1  root root  179M  Jul  22  22:43  jboss-eap-6.4.0-installer.jar

0x03 JBoss EAP

安装ant的时候会默认装上JDK 1.8,所以我用java命令安装JBoos EAP:

[root@ejbca  ~]# java -jar ejbca/jboss-eap-6.4.0-installer.jar

在安装过程中会有交互:

#选择安装语言,默认为英语
Select language  :
0:  eng
1:  chn
2:  deu
3:  fra
4:  jpn
5:  por
6:  spa
Please choose  [0]  :

#确认协议之后是安装路径,默认即可
Select the installation path:  [/root/EAP-6.4.0]

#随后是部件选项,默认即可
Select the packs you want to  install:

1    [x]  [Required]      [Red Hat JBoss Enterprise Application Platform]  (542.89  KB)
2    [x] [AppClient]  (34.24  KB)
3    [x]  [Required]      [Bin]  (10.99  MB)
4    [x]  [Required]      [Bundles]  (1.01  MB)
5    [x] [Docs]  (4.75  MB)
6    [x]  [Required]      [Domain]  (125.56  KB)
7    [x]  [Required]      [Domain Shell Scripts]  (17.35  KB)
8    [x]  [Required]      [Modules]  (147.01  MB)
9    [x]  [Required]      [Standalone]  (152.77  KB)
10 [x]  [Required]      [Standalone Shell Scripts]  (14.16  KB)
11 [x]  [Required]      [Welcome Content]  (2.11  MB)
12 [x] [Red Hat JBoss Enterprise Application Platform Natives]  (8  KB)
13 [x] [Native RHEL7 x86_64]  (76  KB)
14 [x] [Native Utils RHEL7 x86_64]  (53.04  KB)
15 [x] [Native Webserver RHEL7 x86_64]  (254.97  KB)
Total Size Required:  167.11  MB
Press  0  to  confirm your selections
Please select which packs you want to  install

#随后是jboss用户名和密码
Admin username:  [admin]
Admin password:  []
*************
Confirm admin password:  [*************]
*************
press  1  to  continue,  2  to  quit,  3  to  redisplay.

#然后是演示文件的安装,我选择no
Quickstarts
Red Hat JBoss Enterprise Application Platform comes with  a  series of quickstart examples designed to  help users begin writing applications using the Java EE  6  technologies.  Would you like to  install quickstarts?
0  [x]  No
1  [  ]  Yes

#最后是监听端口,默认是8080,
Socket Bindings
Configure the socket bindings for  Red Hat JBoss Enterprise Application Platform.
Select Port Configuration:
0  [x]  Use  the default  port bindings for  standalone and  domain modes.
1  [  ]  Configure an offset for  all default  port bindings.
2  [  ]  Configure custom port bindings.

#紧接着是是否启用IPv6
If  this  computer is  using  a  pure IPv6 configuration,  please check the box below.
  [  ]  Enable pure IPv6 configuration

#然后会询问是否启动服务器,先不启动
Server Launch
Choose server startup mode:
0  [x]  Don't  start the server
1  [  ]  Standalone Mode
2  [  ]  Domain Mode

#选择日志等级
Configure the logging levels for  Red Hat JBoss Enterprise Application Platform?
0  [x]  No
1  [  ]  Yes
#选择配置文件
Configure runtime environment
There are several additional options for  configuring Red Hat JBoss Enterprise Application Platform now that the server has been installed.  Each  option can be individually chosen,  and  will be configured in  the order displayed upon pressing next.  Would you like to  do  this  now?
0  [x]  Perform default  configuration
1  [  ]  Perform advanced configuration

经过一系列交互之后就会解包安装:

image

到这里已经完成JBoss EAP的安装,其实他有个基于web的控制面饭,但是服务器只监听127.0.0.1这个IP,如果需要监听其他IP或0.0.0.0,请修改以下文件:

#打开文件进行修改
[root@ejbca  ~]# vim /root/EAP-6.4.0/standalone/configuration/standalone.xml
#定位到interface的节点并修改监听地址为0.0.0.0
    <interfaces>
        <interface  name="management">
            <inet-address value="${jboss.bind.address.management:0.0.0.0}"/>
        </interface>
        <interface  name="public">
            <inet-address value="${jboss.bind.address:0.0.0.0}"/>
        </interface>
        <!--  TODO  -  only show this  if  the jacorb subsystem is  added  -->
        <interface  name="unsecure">
            <!--
              ~  Used for  IIOP sockets in  the standard configuration.
              ~                  To  secure JacORB you need to  setup SSL
              -->
            <inet-address value="${jboss.bind.address.unsecure:0.0.0.0}"/>
        </interface>
    </interfaces>
image

随后使用以下命令启动服务,在这里先不用脚本,因为后面需要重启服务。启动服务后再打开一个SSH窗口进行下面的步骤:

[root@ejbca  ~]# /root/EAP-6.4.0/bin/standalone.sh
image

确认JBoss EAP服务启动后即可通过浏览器打开管理界面:

image

0x04 mariadb connector

为了让JBoss EAP连接上mariadb,需要使用MariaDB Connector,可以通过以下地址下载:

我写这篇文章的时候,最新版是2.0.3,可以通过以下地址直接下载:

然后创建数据库驱动文件夹并将下载好的MariaDB Connector放置到该目录中:

#进入JBoss根目录
[root@ejbca  ~]# cd /root/EAP-6.4.0/
#新建文件夹
[root@ejbca ejbca_ce_6_5.0.5]# mkdir -p modules/org/mariadb/main/
#检查文件
[root@ejbca ejbca_ce_6_5.0.5]# ll -h modules/org/mariadb/main/
total  460K
-rw-r--r--  1  root root  457K  Jul  22  23:43  mariadb-java-client-2.0.3.jar

最后还需要在该目录中新建一个配置文件:

[root@ejbca ejbca_ce_6_5.0.5]# cat modules/org/mariadb/main/module.xml
<?xml version="1.0"  encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0"  name="org.mariadb">
  <resources>
    <resource-root path="mariadb-java-client-2.0.3.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
    <module name="org.slf4j"/>
  </dependencies>
</module>

请注意修改resources字段中的文件名。

然后是启用MariaDB Connector,使用jboss-cli.sh进入JBoss cli:

[root@ejbca ejbca_ce_6_5.0.5]# /root/EAP-6.4.0/bin/jboss-cli.sh
You are disconnected at  the moment.  Type  'connect'  to  connect to  the server or  'help'  for  the list of supported commands.
[disconnected  /]

如果提示disconnected,则需要输入connect并回车,如果一切正常则显示:

[standalone@localhost:9999  /]
image

然后输入以下命令在JBoss中注册mariadb驱动:

#注册驱动
/subsystem=datasources/jdbc-driver=org.mariadb.jdbc.Driver:add(driver-name=org.mariadb.jdbc.Driver,driver-module-name=org.mariadb,driver-xa-datasource-class-name=org.mariadb.jdbc.MySQLDataSource)

#重新加载
:reload
image

完成后输入exit回车即可退出。

0x05 EJBCA

在新SSH窗口中解压并进入EJBCA源码目录:

#进入临时文件夹
[root@ejbca  ~]# cd /root/ejbca/
#解压文件
[root@ejbca  ~]# unzip ejbca_ce_6_5.0.5.zip
#进入EJBCA目录
[root@ejbca  ~]# cd /root/ejbca/ejbca_ce_6_5.0.5/

0x05.1 配置文件

先进入配置文件目录:

[root@ejbca ejbca_ce_6_5.0.5]# cd conf/

配置文件目录包含以下文件:

[root@ejbca conf]# ll -h
total  176K
-rw-------  1  root root  587  Apr  6  10:29  batchtool.properties.sample
-rw-------  1  root root  8.1K  Apr  6  10:29  cache.properties.sample
-rw-------  1  root root  1.4K  Apr  6  10:29  catoken.properties.sample
-rw-------  1  root root  396  Apr  6  10:29  certstore.properties.sample
-rw-------  1  root root  14K  Apr  6  10:29  cesecore.properties.sample
-rw-------  1  root root  1.4K  Apr  6  10:29  cmptcp.properties.sample
-rw-------  1  root root  362  Apr  6  10:29  crlstore.properties.sample
-rw-------  1  root root  100  Apr  6  10:29  custom.properties.sample
-rw-------  1  root root  3.1K  Apr  6  10:29  database.properties.sample
-rw-------  1  root root  9.5K  Apr  6  10:29  ejbca.properties.sample
-rw-------  1  root root  3.1K  Apr  6  10:29  externalra-gui.properties.sample
-rw-------  1  root root  1.9K  Apr  6  10:29  externalra.properties.sample
-rw-------  1  root root  3.2K  Apr  6  10:29  install.properties.sample
-rw-------  1  root root  2.7K  Apr  6  10:29  jaxws.properties.sample
-rw-------  1  root root 50  Apr  6  10:29  jndi.properties.glassfish
-rw-------  1  root root  146  Apr  6  10:29  jndi.properties.jboss7
-rw-------  1  root root  146  Apr  6  10:29  jndi.properties.jbosseap6
-rw-------  1  root root  4.2K  Apr  6  10:29  log4j-glassfish.xml.sample
-rw-------  1  root root  4.8K  Apr  6  10:29  log4j-jboss6.xml.sample
-rw-------  1  root root  4.0K  Apr  6  10:29  log4j-jbosseap6.xml.sample
drwx------  2  root root 36  Apr  6  10:29  logdevices
-rw-------  1  root root  1.3K  Apr  6  10:29  mail.properties.sample
-rw-------  1  root root  18K  Apr  6  10:29  ocsp.properties.sample
drwx------  2  root root 37  Apr  6  10:29  plugins
-rw-------  1  root root  6.4K  Apr  6  10:29  scepra.properties.sample
-rw-------  1  root root  1.2K  Apr  6  10:29  systemtests.properties.sample
-rw-------  1  root root  2.4K  Apr  6  10:29  va.properties.sample
-rw-------  1  root root  1.9K  Apr  6  10:29  va-publisher.properties.sample
-rw-------  1  root root  13K  Apr  6  10:29  web.properties.sample

EJBCA只加载后缀名为properties的文件,否则则加载默认配置。在这里我们需要修改以下文件:

  • database.properties:数据库配置文件
  • ejbca.properties:EJBCA配置文件
  • install.properties:安装配置文件
  • web.properties:web服务配置文件

首先是数据库配置文件,先将文件复制一份然后进行修改:

#复制
[root@ejbca conf]# cp database.properties.sample database.properties
#修改
[root@ejbca conf]# vim database.properties
#修改以下内容
database.name=mysql
database.url=jdbc:mysql://10.1.1.14:3306/ejbca?characterEncoding=UTF-8
database.driver=org.mariadb.jdbc.Driver
database.username=ejbca
database.password=ejbca

然后复制并修改EJBCA配置文件:

#复制文件
[root@ejbca conf]# cp ejbca.properties.sample ejbca.properties
#修改文件
[root@ejbca conf]# vim ejbca.properties
#修改以下内容
appserver.home=/root/EAP-6.4.0
appserver.type=jboss
approval.defaultrequestvalidity=28800
approval.defaultapprovalvalidity=28800
ejbca.passwordlogrounds=8

然后修改安装配置文件:

#复制文件
[root@ejbca conf]# cp install.properties.sample install.properties
#修改文件
[root@ejbca conf]# vim install.properties
#修改以下内容
ca.name=EnginxManagementCA
ca.dn=CN=EnginxManagementCA,O=EnginxNet,C=CN
ca.tokentype=soft
ca.tokenpassword=null
ca.keyspec=4096
ca.keytype=RSA
ca.signaturealgorithm=SHA256WithRSA
ca.validity=3650
ca.policy=null
ca.certificateprofile=ROOTCA

最后是web服务配置文件:

#复制文件
[root@ejbca conf]# cp web.properties.sample web.properties
#修改文件
[root@ejbca conf]# vim web.properties
#修改以下内容
java.trustpassword=changeit  #默认即可
superadmin.cn=SuperAdmin  #默认即可
superadmin.dn=CN=${superadmin.cn},O=EnginxNet,C=CN
superadmin.password=ejbca  #默认即可
superadmin.batch=true
httpsserver.password=serverpwd  #默认即可
httpsserver.hostname=ca.ejbca.t.com
httpsserver.dn=CN=${httpsserver.hostname},O=EnginxNet,C=CN
httpserver.pubhttp=8080
httpserver.pubhttps=8442
httpserver.privhttps=8443

0x05.2 部署 / 安装

修改完成配置文件后回到EJBCA源码根目录并运行以下命令记性部署:

#回到根目录
[root@ejbca conf]# cd /root/ejbca/ejbca_ce_6_5.0.5/
#部署
[root@ejbca ejbca_ce_6_5.0.5]# ant deploy

部署需要较长的时间,请耐心等待。如果成功则显示:

BUILD SUCCESSFUL
Total time:  1  minute  39  seconds

然后还需要安装,安装过程中可以看到配置信息:

[root@ejbca ejbca_ce_6_5.0.5]# ant install

成功后会显示如下内容:

BUILD SUCCESSFUL
Total time:  3  minutes  11  seconds

数据库则会生成以下表:

MariaDB  [ejbca]>  show tables;
+-----------------------------+
|  Tables_in_ejbca |
+-----------------------------+
|  AccessRulesData |
|  AdminEntityData |
|  AdminGroupData              |
|  AdminPreferencesData        |
|  ApprovalData                |
|  AuditRecordData |
|  AuthorizationTreeUpdateData  |
|  Base64CertData              |
|  CAData                      |
|  CRLData |
|  CertReqHistoryData          |
|  CertificateData |
|  CertificateProfileData      |
|  CryptoTokenData |
|  EndEntityProfileData        |
|  GlobalConfigurationData |
|  HardTokenCertificateMap |
|  HardTokenData |
|  HardTokenIssuerData |
|  HardTokenProfileData        |
|  HardTokenPropertyData |
|  InternalKeyBindingData      |
|  KeyRecoveryData |
|  PeerData                    |
|  PublisherData |
|  PublisherQueueData          |
|  ServiceData |
|  UserData                    |
|  UserDataSourceData          |
+-----------------------------+
29  rows in  set  (0.00  sec)

0x05.3 登入

这时候可以通过以下地址访问公开页面:

http://10.1.1.100:8080/ejbca/
image

如果需要登入管理界面,则需要先重启JBoss。回到JBoss的SSH窗口按下组合键CTRL+C终止运行,然后再重新启动JBoss。从控制台中可以查看监听的地址与端口:

01:14:30,664  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-1)  JBWEB003001:  Coyote HTTP/1.1  initializing on  :  http-/0.0.0.0:8443
01:14:30,675  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-3)  JBWEB003001:  Coyote HTTP/1.1  initializing on  :  http-/0.0.0.0:8442
01:14:30,678  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-2)  JBWEB003001:  Coyote HTTP/1.1  initializing on  :  http-/0.0.0.0:8080
01:14:30,705  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-1)  JBWEB003000:  Coyote HTTP/1.1  starting on:  http-/0.0.0.0:8443
01:14:30,710  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-2)  JBWEB003000:  Coyote HTTP/1.1  starting on:  http-/0.0.0.0:8080
01:14:30,722  INFO  [org.apache.coyote.http11.Http11Protocol]  (MSC service thread  1-3)  JBWEB003000:  Coyote HTTP/1.1  starting on:  http-/0.0.0.0:8442

在登入之前需要在以下目录将p12证书文件保存到本地并安装:

[root@ejbca  ~]# ll /root/ejbca/ejbca_ce_6_5.0.5/p12/
total  20
-rw-r--r--  1  root root  4334  Jul  23  01:06  superadmin.p12
-rw-r--r--  1  root root  5332  Jul  23  01:05  tomcat.jks
-rw-r--r--  1  root root  1456  Jul  23  01:06  truststore.jks

在windows系统中双击下载的p12文件并选择“本地用户”:

image

证书密码为“ejbca”:

image

证书导入完毕后即可通过浏览器登入管理面板:

https://10.1.1.100:8443/ejbca/adminweb/
image

这里要选择正确的数字证书,否则无法登入,登入后的界面如下:

image

0x06 结语

EJBCA是一套很强大的CA管理软件,完全可以在企业内部部署使用。

JBoss的启动可以使用以下脚本:

[root@ejbca  ~]# cat /usr/local/shell/jboss_startup.sh
#!/bin/sh
nohup  /root/EAP-6.4.0/bin/standalone.sh  >  /dev/null  2>&1  &

0x07 相关视频

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,778评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • JBoss AS7集群方案...2 基础环境搭建...2 安装jdk.3 AS7安装、配置3 AS7群集配置、测试...
    lannerate阅读 2,844评论 0 1
  • 独处时光,心灵的秘密花园。 闭眼感受着习习微风,不再划动手中的木浆,让水波带我去任意的地方。 理科生已词穷,画的过...
    Blue__Ocean阅读 237评论 1 0
  • 来简书一个月,积累了一些文字,不免有些无节制的狂热。眼睛由于长时间看手机,怕光,流泪,肿胀,疼瑟的症状越来越明显了...
    静静的白莲阅读 1,896评论 41 69