OSVDC Series: Root Certificate Authority (PKI) with Dogtag 10.3 on Fedora 24 - rharmonson/richtech GitHub Wiki

OSVDC: Root Certificate Authority (PKI) with Dogtag 10.3 on Fedora 24

Article 14 of the Open Source Virtual Data Center Series


Revision March 10, 2017; link to the CentOS 7.3.1611 version

Published September 28, 2016



Dogtag 10.3 on CentOS 7.3.1611

The reason I originally used Fedora was due to the fact FreeIPA 4.3 on CentOS 7.2.1511 did not support the use of an external CA. As of FreeIPA 4.4 on CentOS 7.3.1611, it is supported. The CentOS 7.3.1611 guide can be found here:

Root Certificate Authority (PKI) with Dogtag 10.3 on CentOS 7.3.1611


Purpose

The purpose of this guide is to provide instructions on building an off-line Root Certificate Authority (CA) to issue Subordinate CA certificates. My specific use case is for use with FreeIPA, but it is applicable, generally, for any internal PKI implementation.

Why off-line? A Root CA should not be accessible and should be a carefully guarded asset. If an unauthorized individual obtained the Root CA private key, the entire PKI system is compromised. Best case, the PKI will need to be demolished, a new one built, and all certificates replaced. Depending on the size of your organization and the prevalence of certificates, recovery could be a lengthy and costly endeavor.

Fedora 24 Base Installation

Using the Fedora 24 Server installation media, select custom and do not select any package groups. This will result with an installation similar to CentOS or RHEL Minimal

Remove NetworkManager

# systemctl stop NetworkManager
# systemctl disable NetworkManager
# dnf remove NetworkManager
# cp /etc/resolv.conf /etc/resolv.conf.bak
# rm /etc/resolv.conf (sybolic links to NetworkManager)
# mv /etc/resolv.conf.bak /etc/resolv.conf
# vi /etc/resolv.conf
# chkconfig network on

Firewall

Unless you will be permitting access to Dogtag web services or other management services, block all access except SSH.

Below outlines one strategy, but it is my personal preference.

Remove firewalld

Begin by disabling and removing firewalld, then install iptables-services to save your work.

[root@ca ~]# systemctl stop firewalld
[root@ca ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@ca ~]# dnf remove firewalld       
Dependencies resolved.
=========================================================================================
 Package                      Arch          Version               Repository        Size
=========================================================================================
Removing:
 dbus-glib                    x86_64        0.106-1.fc24          @anaconda        322 k
 ebtables                     x86_64        2.0.10-20.fc24        @updates         338 k
 firewalld                    noarch        0.4.3.2-1.fc24        @updates         1.8 M
 firewalld-filesystem         noarch        0.4.3.2-1.fc24        @updates         239  
 gobject-introspection        x86_64        1.48.0-1.fc24         @anaconda        809 k
 ipset                        x86_64        6.27-2.fc24           @anaconda         77 k
 ipset-libs                   x86_64        6.27-2.fc24           @anaconda        262 k
 libselinux-python3           x86_64        2.5-9.fc24            @updates         648 k
 python3-dbus                 x86_64        1.2.4-1.fc24          @anaconda        556 k
 python3-decorator            noarch        4.0.6-2.fc24          @anaconda        371 k
 python3-firewall             noarch        0.4.3.2-1.fc24        @updates         2.2 M
 python3-gobject-base         x86_64        3.20.1-1.fc24         @anaconda        1.2 M
 python3-slip                 noarch        0.6.4-3.fc24          @anaconda         68 k
 python3-slip-dbus            noarch        0.6.4-3.fc24          @anaconda         88 k

Transaction Summary
=========================================================================================
Remove  14 Packages

Installed size: 8.6 M
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.                                                             
Running transaction test                                                                 
Transaction test succeeded.                                                              
Running transaction                                                                      
  Erasing     : firewalld-0.4.3.2-1.fc24.noarch                                     1/14 
  Erasing     : python3-firewall-0.4.3.2-1.fc24.noarch                              2/14 
  Erasing     : python3-slip-dbus-0.6.4-3.fc24.noarch                               3/14 
  Erasing     : python3-slip-0.6.4-3.fc24.noarch                                    4/14 
  Erasing     : python3-dbus-1.2.4-1.fc24.x86_64                                    5/14 
  Erasing     : python3-gobject-base-3.20.1-1.fc24.x86_64                           6/14 
  Erasing     : ipset-6.27-2.fc24.x86_64                                            7/14 
  Erasing     : python3-decorator-4.0.6-2.fc24.noarch                               8/14 
  Erasing     : firewalld-filesystem-0.4.3.2-1.fc24.noarch                          9/14 
  Erasing     : ipset-libs-6.27-2.fc24.x86_64                                      10/14 
  Erasing     : gobject-introspection-1.48.0-1.fc24.x86_64                         11/14 
  Erasing     : dbus-glib-0.106-1.fc24.x86_64                                      12/14 
  Erasing     : libselinux-python3-2.5-9.fc24.x86_64                               13/14 
  Erasing     : ebtables-2.0.10-20.fc24.x86_64                                     14/14 
  Verifying   : dbus-glib-0.106-1.fc24.x86_64                                       1/14 
  Verifying   : firewalld-0.4.3.2-1.fc24.noarch                                     2/14 
  Verifying   : firewalld-filesystem-0.4.3.2-1.fc24.noarch                          3/14 
  Verifying   : ipset-6.27-2.fc24.x86_64                                            4/14 
  Verifying   : ipset-libs-6.27-2.fc24.x86_64                                       5/14 
  Verifying   : libselinux-python3-2.5-9.fc24.x86_64                                6/14 
  Verifying   : python3-dbus-1.2.4-1.fc24.x86_64                                    7/14 
  Verifying   : python3-decorator-4.0.6-2.fc24.noarch                               8/14 
  Verifying   : python3-firewall-0.4.3.2-1.fc24.noarch                              9/14 
  Verifying   : python3-gobject-base-3.20.1-1.fc24.x86_64                          10/14 
  Verifying   : gobject-introspection-1.48.0-1.fc24.x86_64                         11/14 
  Verifying   : ebtables-2.0.10-20.fc24.x86_64                                     12/14 
  Verifying   : python3-slip-0.6.4-3.fc24.noarch                                   13/14 
  Verifying   : python3-slip-dbus-0.6.4-3.fc24.noarch                              14/14 

Removed:
  dbus-glib.x86_64 0.106-1.fc24               ebtables.x86_64 2.0.10-20.fc24             
  firewalld.noarch 0.4.3.2-1.fc24             firewalld-filesystem.noarch 0.4.3.2-1.fc24 
  gobject-introspection.x86_64 1.48.0-1.fc24  ipset.x86_64 6.27-2.fc24                   
  ipset-libs.x86_64 6.27-2.fc24               libselinux-python3.x86_64 2.5-9.fc24       
  python3-dbus.x86_64 1.2.4-1.fc24            python3-decorator.noarch 4.0.6-2.fc24      
  python3-firewall.noarch 0.4.3.2-1.fc24      python3-gobject-base.x86_64 3.20.1-1.fc24  
  python3-slip.noarch 0.6.4-3.fc24            python3-slip-dbus.noarch 0.6.4-3.fc24      

Complete!
[root@ca ~]# dnf install iptables-services
Last metadata expiration check: 1:59:17 ago on Thu Jul 21 11:08:29 2016.
Dependencies resolved.
=========================================================================================
 Package                   Arch           Version                   Repository      Size
=========================================================================================
Installing:
 iptables-services         x86_64         1.4.21-16.fc24            fedora          53 k

Transaction Summary
=========================================================================================
Install  1 Package

Total download size: 53 k
Installed size: 19 k
Is this ok [y/N]: y
Downloading Packages:
iptables-services-1.4.21-16.fc24.x86_64.rpm              407 kB/s |  53 kB     00:00    
-----------------------------------------------------------------------------------------
Total                                                     53 kB/s |  53 kB     00:01     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Installing  : iptables-services-1.4.21-16.fc24.x86_64                              1/1 
  Verifying   : iptables-services-1.4.21-16.fc24.x86_64                              1/1 

Installed:
  iptables-services.x86_64 1.4.21-16.fc24                                                

Complete!
[root@ca ~]# systemctl enable iptables
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.
[root@ca ~]# systemctl start iptables

Create a file "dogtag.fw" to execute and document our firewall policies. Once created either pipe into bash or chmod +x to execute ./dogtag.fw.

#!/bin/bash
# Dogtag 10.3 Firewall

# Clear or flush existing rules
iptables -F

# Default Policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Accept all local traffic
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Accept ICMP Echo
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# Accept SSH
iptables -I INPUT -p tcp --dport 22 -j ACCEPT

# Accept Dogtag (optional)
#iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
#iptables -I INPUT -p tcp --dport 8443 -j ACCEPT

# Accept returning connections (stateful)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Save & Restart iptables
service iptables save

# Service
systemctl restart iptables
systemctl status iptables

Results

[root@ca ~]# iptables -L -n -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8443
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
   47  3368 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 32 packets, 5120 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0              

Name Resolution

DNS in my environment will be FreeIPA, but the Dogtag CA is a dependency to build FreeIPA. As such, configure the host with a static IP address and update /etc/hosts to meet the requirement for name resolution of the 389-ds-base directory service. Using host name ca.mydomain.net and IP address 192.168.10.11/24 results with:


[root@ca ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.11 ca.mydomain.net ca

Entropy (optional)

Entropy in virtual machines can be a bit of a challenge. At this time, I am using "haveged" but I am hoping the oVirt project will resolve the issues with a better implementation of their /dev/random. Please research and understand the pros/cons of haveged for yourself.

Further reading:

  1. http://wiki.qemu.org/Features-Done/VirtIORNG.
  2. https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/sect-Guest_virtual_machine_device_configuration-Random_number_generator_device.html

Install haveged

[root@ca ~]# dnf install haveged
Last metadata expiration check: 0:16:42 ago on Tue Sep  6 05:57:02 2016.
Dependencies resolved.
================================================================================
 Package          Arch            Version                 Repository       Size
================================================================================
Installing:
 haveged          x86_64          1.9.1-5.fc24            fedora           69 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 69 k
Installed size: 189 k
Is this ok [y/N]: y
Downloading Packages:
haveged-1.9.1-5.fc24.x86_64.rpm                 202 kB/s |  69 kB     00:00
--------------------------------------------------------------------------------
Total                                            78 kB/s |  69 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Installing  : haveged-1.9.1-5.fc24.x86_64                                 1/1
  Verifying   : haveged-1.9.1-5.fc24.x86_64                                 1/1

Installed:
  haveged.x86_64 1.9.1-5.fc24

Complete!

Enable haveged

[root@ca ~]# systemctl enable haveged
Created symlink from /etc/systemd/system/multi-user.target.wants/haveged.service to /usr/lib/systemd/system/haveged.service.
[root@ca ~]# systemctl start haveged
[root@ca ~]# systemctl status haveged
● haveged.service - Entropy Daemon based on the HAVEGE algorithm
   Loaded: loaded (/usr/lib/systemd/system/haveged.service; enabled; vendor pres
   Active: active (running) since Tue 2016-09-06 06:15:06 PDT; 4s ago
     Docs: man:haveged(8)
           http://www.issihosts.com/haveged/
 Main PID: 29730 (haveged)
    Tasks: 1 (limit: 512)
   CGroup: /system.slice/haveged.service
           └─29730 /usr/sbin/haveged -w 1024 -v 1 --Foreground

Sep 06 06:15:06 ca.mydomain.net systemd[1]: Started Entropy Daemon bas
Sep 06 06:15:06 ca.mydomain.net haveged[29730]: haveged: ver: 1.9.1; a
Sep 06 06:15:06 ca.mydomain.net haveged[29730]: haveged: cpu: (L4 VC);
Sep 06 06:15:06 ca.mydomain.net haveged[29730]: haveged: tot tests(BA8
Sep 06 06:15:06 ca.mydomain.net haveged[29730]: haveged: fills: 0, gen

Components

The solution components are:

  1. Dogtag PKI Certificate Authority; pki-ca and dependencies
  2. Dogtag theme; server theme (optional)
  3. 389, 389-ds-base; Directory Service

389 is a dependency for Dogtag CA.

389 & Dogtag Packages

Install 389 and Dogtag PKI-CA. Package dogtag-server-theme is optional, however, if you want to explore the web UI, you need the theme package installed prior to configuration of the Dogtag CA instance.

[root@ca ~]# dnf install 389-ds-base pki-ca dogtag-server-theme

Results

================================================================================
 Package                      Arch   Version                      Repository
                                                                           Size
================================================================================
Installing:
 389-ds-base                  x86_64 1.3.5.13-1.fc24              updates 1.7 M
 389-ds-base-libs             x86_64 1.3.5.13-1.fc24              updates 675 k
 apache-commons-cli           noarch 1.3.1-3.fc24                 fedora   72 k
 apache-commons-codec         noarch 1.10-3.fc24                  fedora  247 k
 apache-commons-collections   noarch 3.2.2-3.fc24                 fedora  534 k
 apache-commons-daemon        x86_64 1.0.15-11.fc24               fedora   60 k
 apache-commons-dbcp          noarch 1.4-20.fc24                  fedora  172 k
 apache-commons-io            noarch 1:2.4-15.fc24                fedora  192 k
 apache-commons-lang          noarch 2.6-18.fc24                  fedora  281 k
 apache-commons-logging       noarch 1.2-5.fc24                   fedora   86 k
 apache-commons-pool          noarch 1.6-12.fc24                  fedora  122 k
 audit-libs-python            x86_64 2.6.6-1.fc24                 updates  95 k
 audit-libs-python3           x86_64 2.6.6-1.fc24                 updates  96 k
 bea-stax-api                 noarch 1.2.0-12.fc24                fedora   36 k
 checkpolicy                  x86_64 2.5-6.fc24                   updates 298 k
 copy-jdk-configs             noarch 1.2-1.fc24                   updates  18 k
 cyrus-sasl-gssapi            x86_64 2.1.26-26.2.fc24             fedora   46 k
 cyrus-sasl-md5               x86_64 2.1.26-26.2.fc24             fedora   62 k
 dogtag-pki-server-theme      noarch 10.3.5-1.fc24                updates 296 k
 ecj                          noarch 1:4.6-1.fc24                 updates 2.2 M
 glassfish-fastinfoset        noarch 1.2.13-4.fc24                fedora  352 k
 glassfish-jaxb-api           noarch 2.2.12-4.fc24                fedora  100 k
 glassfish-jaxb-core          noarch 2.2.11-4.fc24                fedora  156 k
 glassfish-jaxb-runtime       noarch 2.2.11-4.fc24                fedora  930 k
 glassfish-jaxb-txw2          noarch 2.2.11-4.fc24                fedora   89 k
 httpcomponents-client        noarch 4.5.2-2.fc24                 fedora  700 k
 httpcomponents-core          noarch 4.4.4-2.fc24                 fedora  633 k
 istack-commons-runtime       noarch 2.21-4.fc24                  fedora   43 k
 jackson                      noarch 1.9.11-8.fc24                fedora  1.0 M
 jakarta-commons-httpclient   noarch 1:3.1-24.fc24                fedora  247 k
 java-1.8.0-openjdk-headless  x86_64 1:1.8.0.102-1.b14.fc24       updates  32 M
 javapackages-tools           noarch 4.6.0-14.fc24                fedora  104 k
 javassist                    noarch 3.18.1-5.fc24                fedora  680 k
 jboss-annotations-1.2-api    noarch 1.0.0-1.fc24                 updates  40 k
 jboss-jaxrs-2.0-api          noarch 1.0.0-3.fc24                 updates 112 k
 jboss-logging                noarch 3.3.0-1.fc24                 updates  74 k
 jcip-annotations             noarch 1-18.20060626.fc24           fedora   14 k
 joda-time                    noarch 2.9.2-1.fc24                 fedora  517 k
 jsr-311                      noarch 1.1.1-12.fc24                fedora   51 k
 jss                          x86_64 4.2.6-41.fc24                updates 714 k
 jvnet-parent                 noarch 4-7.fc24                     fedora   15 k
 ldapjdk                      noarch 4.18-19.fc24                 updates 321 k
 libcgroup                    x86_64 0.41-8.fc24                  fedora   67 k
 libevent                     x86_64 2.0.21-8.fc24                fedora  215 k
 libicu                       x86_64 56.1-4.fc24                  fedora  8.3 M
 libjpeg-turbo                x86_64 1.5.0-1.fc24                 updates 153 k
 libselinux-python            x86_64 2.5-9.fc24                   updates 242 k
 libselinux-python3           x86_64 2.5-9.fc24                   updates 243 k
 libsemanage-python           x86_64 2.5-5.fc24                   updates 109 k
 libsemanage-python3          x86_64 2.5-5.fc24                   updates 113 k
 libtalloc                    x86_64 2.1.6-1.fc24                 fedora   45 k
 libtevent                    x86_64 0.9.28-1.fc24                fedora   37 k
 lksctp-tools                 x86_64 1.0.16-5.fc24                fedora   93 k
 lua-posix                    x86_64 33.3.1-2.fc24                fedora  173 k
 net-tools                    x86_64 2.0-0.37.20160329git.fc24    fedora  318 k
 nuxwdog                      x86_64 1.0.3-6.fc24                 fedora   49 k
 nuxwdog-client-java          x86_64 1.0.3-6.fc24                 fedora   16 k
 objectweb-asm3               noarch 3.3.1-13.fc24                fedora  395 k
 openldap-clients             x86_64 2.4.44-1.fc24                fedora  190 k
 perl                         x86_64 4:5.22.2-362.fc24            updates 5.9 M
 perl-Algorithm-Diff          noarch 1.1903-4.fc24                fedora   51 k
 perl-Archive-Tar             noarch 2.06-2.fc24                  updates  76 k
 perl-Carp                    noarch 1.38-2.fc24                  fedora   28 k
 perl-Compress-Raw-Bzip2      x86_64 2.069-2.fc24                 fedora   37 k
 perl-Compress-Raw-Zlib       x86_64 2.069-2.fc24                 fedora   64 k
 perl-DB_File                 x86_64 1.838-1.fc24                 fedora   79 k
 perl-Data-Dumper             x86_64 2.158-348.fc24               fedora   55 k
 perl-Encode                  x86_64 3:2.84-9.fc24                updates 1.5 M
 perl-Errno                   x86_64 1.23-362.fc24                updates  62 k
 perl-Exporter                noarch 5.72-349.fc24                fedora   33 k
 perl-File-Path               noarch 2.12-2.fc24                  fedora   34 k
 perl-File-Temp               noarch 0.23.04-347.fc24             fedora   61 k
 perl-Getopt-Long             noarch 2.49.1-1.fc24                updates  61 k
 perl-HTTP-Tiny               noarch 0.056-5.fc24                 updates  53 k
 perl-IO                      x86_64 1.35-362.fc24                updates 128 k
 perl-IO-Compress             noarch 2.069-3.fc24                 updates 255 k
 perl-IO-Zlib                 noarch 1:1.10-362.fc24              updates  67 k
 perl-MIME-Base64             x86_64 3.15-349.fc24                fedora   29 k
 perl-Math-BigInt             noarch 1.9997.15-2.fc24             fedora  178 k
 perl-Math-Complex            noarch 1.59-362.fc24                updates  95 k
 perl-Mozilla-LDAP            x86_64 1.5.3-18.fc24                fedora  148 k
 perl-NetAddr-IP              x86_64 4.079-1.fc24                 fedora  130 k
 perl-PathTools               x86_64 3.62-3.fc24                  updates  88 k
 perl-Pod-Escapes             noarch 1:1.07-349.fc24              fedora   20 k
 perl-Pod-Perldoc             noarch 3.26-1.fc24                  updates  86 k
 perl-Pod-Simple              noarch 1:3.32-3.fc24                fedora  211 k
 perl-Pod-Usage               noarch 4:1.69-1.fc24                fedora   33 k
 perl-Scalar-List-Utils       x86_64 2:1.45-1.fc24                fedora   65 k
 perl-Socket                  x86_64 3:2.024-1.fc24               updates  56 k
 perl-Socket6                 x86_64 0.27-1.fc24                  fedora   34 k
 perl-Term-ANSIColor          noarch 4.03-347.fc24                fedora   45 k
 perl-Term-Cap                noarch 1.17-2.fc24                  fedora   22 k
 perl-Text-Diff               noarch 1.44-1.fc24                  fedora   44 k
 perl-Text-ParseWords         noarch 3.30-347.fc24                fedora   17 k
 perl-Text-Tabs+Wrap          noarch 2013.0523-347.fc24           fedora   23 k
 perl-Time-Local              noarch 1.2300-347.fc24              fedora   29 k
 perl-Unicode-Normalize       x86_64 1.25-2.fc24                  fedora   80 k
 perl-constant                noarch 1.33-348.fc24                fedora   24 k
 perl-libs                    x86_64 4:5.22.2-362.fc24            updates 1.4 M
 perl-macros                  x86_64 4:5.22.2-362.fc24            updates  59 k
 perl-parent                  noarch 1:0.234-4.fc24               fedora   18 k
 perl-podlators               noarch 4.07-1.fc24                  fedora  113 k
 perl-threads                 x86_64 1:2.02-3.fc24                fedora   58 k
 perl-threads-shared          x86_64 1.48-347.fc24                fedora   44 k
 pki-base                     noarch 10.3.5-1.fc24                updates 427 k
 pki-base-java                noarch 10.3.5-1.fc24                updates 1.1 M
 pki-ca                       noarch 10.3.5-1.fc24                updates 486 k
 pki-server                   noarch 10.3.5-1.fc24                updates 3.0 M
 pki-tools                    x86_64 10.3.5-1.fc24                updates 639 k
 policycoreutils-python       x86_64 2.5-13.fc24                  updates 401 k
 policycoreutils-python-utils x86_64 2.5-13.fc24                  updates 216 k
 policycoreutils-python3      x86_64 2.5-13.fc24                  updates 1.8 M
 publicsuffix-list            noarch 20160805-1.fc24              updates  67 k
 python-IPy                   noarch 0.81-15.fc24                 fedora   42 k
 python-IPy-python3           noarch 0.81-15.fc24                 fedora   42 k
 python-ldap                  x86_64 2.4.25-1.fc24                fedora  174 k
 python-nss                   x86_64 1.0.0-beta1.2.fc24.1         fedora  280 k
 python2-pyasn1               noarch 0.1.9-6.fc24.1               fedora  105 k
 python2-pyasn1-modules       noarch 0.1.9-6.fc24.1               fedora   64 k
 python3-cssselect            noarch 0.9.1-9.fc24                 fedora   64 k
 python3-javapackages         noarch 4.6.0-14.fc24                fedora   89 k
 python3-lxml                 x86_64 3.4.4-4.fc24                 fedora  912 k
 relaxngDatatype              noarch 2011.1-3.fc24                fedora   26 k
 resteasy-atom-provider       noarch 3.0.17-3.fc24                updates  51 k
 resteasy-client              noarch 3.0.17-3.fc24                updates 143 k
 resteasy-core                noarch 3.0.17-3.fc24                updates 779 k
 resteasy-jackson-provider    noarch 3.0.17-3.fc24                updates  18 k
 resteasy-jaxb-provider       noarch 3.0.17-3.fc24                updates  79 k
 setools-libs                 x86_64 3.3.8-10.fc24                fedora  561 k
 sqlite                       x86_64 3.13.0-1.fc24                updates 488 k
 stax-ex                      noarch 1.7.7-4.fc24                 fedora   54 k
 stax2-api                    noarch 3.1.4-4.fc24                 fedora  156 k
 svrcore                      x86_64 4.1.2-1.fc24                 fedora   23 k
 tomcat                       noarch 1:8.0.36-2.fc24              updates  94 k
 tomcat-el-3.0-api            noarch 1:8.0.36-2.fc24              updates 108 k
 tomcat-jsp-2.3-api           noarch 1:8.0.36-2.fc24              updates  73 k
 tomcat-lib                   noarch 1:8.0.36-2.fc24              updates 4.1 M
 tomcat-servlet-3.1-api       noarch 1:8.0.36-2.fc24              updates 258 k
 tomcatjss                    noarch 7.1.3-2.fc24                 fedora   39 k
 tzdata-java                  noarch 2016f-1.fc24                 updates 181 k
 velocity                     noarch 1.7-19.fc24                  fedora  434 k
 xalan-j2                     noarch 2.7.1-28.fc24                fedora  1.9 M
 xerces-j2                    noarch 2.11.0-24.fc24               fedora  1.2 M
 xml-commons-apis             noarch 1.4.01-20.fc24               fedora  232 k
 xml-commons-resolver         noarch 1.2-19.fc24                  fedora  114 k
 xmlstreambuffer              noarch 1.5.4-3.fc24                 fedora   86 k
 xsom                         noarch 0-15.20110809svn.fc24        fedora  396 k

Transaction Summary
================================================================================
Install  147 Packages

Total download size: 89 M
Installed size: 232 M
Is this ok [y/N]:

Setup 389 Directory Service

Begin setup by executing setup-ds.pl to setup 389. See "Results" for details and note account names and passwords.

[root@ca ~]# setup-ds.pl

==============================================================================
This program will set up the 389 Directory Server.

It is recommended that you have "root" privilege to set up the software.
Tips for using this  program:
  - Press "Enter" to choose the default and go to the next screen
  - Type "Control-B" or the word "back" then "Enter" to go back to the previous screen
  - Type "Control-C" to cancel the setup program

Would you like to continue with set up? [yes]:

==============================================================================
Your system has been scanned for potential problems, missing patches,
etc.  The following output is a report of the items found that need to
be addressed before running this software in a production
environment.

389 Directory Server system tuning analysis version 14-JULY-2016.

NOTICE : System is x86_64-unknown-linux4.6.7-300.fc24.x86_64 (2 processors).

NOTICE : The net.ipv4.tcp_keepalive_time is set to 7200000 milliseconds
(120 minutes).  This may cause temporary server congestion from lost
client connections.

WARNING: There are only 1024 file descriptors (soft limit) available, which
limit the number of simultaneous connections.

WARNING  : The warning messages above should be reviewed before proceeding.

Would you like to continue? [no]: yes

==============================================================================
Choose a setup type:

   1. Express
       Allows you to quickly set up the servers using the most
       common options and pre-defined defaults. Useful for quick
       evaluation of the products.

   2. Typical
       Allows you to specify common defaults and options.

   3. Custom
       Allows you to specify more advanced options. This is
       recommended for experienced server administrators only.

To accept the default shown in brackets, press the Enter key.

Choose a setup type [2]:

==============================================================================
Enter the fully qualified domain name of the computer
on which you're setting up server software. Using the form
<hostname>.<domainname>
Example: eros.example.com.

To accept the default shown in brackets, press the Enter key.

Warning: This step may take a few minutes if your DNS servers
can not be reached or if DNS is not configured correctly.  If
you would rather not wait, hit Ctrl-C and run this program again
with the following command line option to specify the hostname:

    General.FullMachineName=your.hostname.domain.name

Computer name [ca.mydomain.net]:

==============================================================================
The server must run as a specific user in a specific group.
It is strongly recommended that this user should have no privileges
on the computer (i.e. a non-root user).  The setup procedure
will give this user/group some permissions in specific paths/files
to perform server-specific operations.

If you have not yet created a user and group for the server,
create this user and group using your native operating
system utilities.

System User [dirsrv]:
System Group [dirsrv]:

==============================================================================
The standard directory server network port number is 389.  However, if
you are not logged as the superuser, or port 389 is in use, the
default value will be a random unused port number greater than 1024.
If you want to use port 389, make sure that you are logged in as the
superuser, that port 389 is not in use.

Directory server network port [389]:

==============================================================================
Each instance of a directory server requires a unique identifier.
This identifier is used to name the various
instance specific files and directories in the file system,
as well as for other uses as a server instance identifier.

Directory server identifier [ca]:

==============================================================================
The suffix is the root of your directory tree.  The suffix must be a valid DN.
It is recommended that you use the dc=domaincomponent suffix convention.
For example, if your domain is example.com,
you should use dc=example,dc=com for your suffix.
Setup will create this initial suffix for you,
but you may have more than one suffix.
Use the directory server utilities to create additional suffixes.

Suffix [dc=mydomain, dc=net]:

==============================================================================
Certain directory server operations require an administrative user.
This user is referred to as the Directory Manager and typically has a
bind Distinguished Name (DN) of cn=Directory Manager.
You will also be prompted for the password for this user.  The password must
be at least 8 characters long, and contain no spaces.
Press Control-B or type the word "back", then Enter to back up and start over.

Directory Manager DN [cn=Directory Manager]:
Password:
Password (confirm):
Your new DS instance 'ca' was successfully created.
Exiting . . .
Log file is '/tmp/setuph_WZPa.log'

Enable & Start 389

[root@ca ~]# systemctl enable dirsrv.target
Created symlink from /etc/systemd/system/multi-user.target.wants/dirsrv.target to /usr/lib/systemd/system/dirsrv.target.
[root@ca ~]# systemctl start dirsrv.target
[root@ca ~]# systemctl status dirsrv.target
● dirsrv.target - 389 Directory Server
   Loaded: loaded (/usr/lib/systemd/system/dirsrv.target; enabled; vendor preset: disabled)
   Active: active since Wed 2016-09-07 05:49:00 PDT; 4s ago

Sep 07 05:49:00 ca.mydomain.net systemd[1]: Reached target 389 Directory Server.

Setup Dogtag CA

Dogtag uses pkispawn for component setup where -s specifies the component to configure.

[root@ca ~]# pkispawn -s CA

IMPORTANT:

    Interactive installation currently only exists for very basic deployments!

    For example, deployments intent upon using advanced features such as:

        * Cloning,
        * Elliptic Curve Cryptography (ECC),
        * External CA,
        * Hardware Security Module (HSM),
        * Subordinate CA,
        * etc.,

    must provide the necessary override parameters in a separate
    configuration file.

    Run 'man pkispawn' for details.

Tomcat:
  Instance [pki-tomcat]:
  HTTP port [8080]:
  Secure HTTP port [8443]:
  AJP port [8009]:
  Management port [8005]:

Administrator:
  Username [caadmin]:
  Password:
  Verify password:
  Import certificate (Yes/No) [N]?
  Export certificate to [/root/.dogtag/pki-tomcat/ca_admin.cert]:

Directory Server:
  Hostname [ca.mydomain.net]:
  Use a secure LDAPS connection (Yes/No/Quit) [N]?
  LDAP Port [389]:
  Bind DN [cn=Directory Manager]:
  Password:
  Base DN [o=pki-tomcat-CA]:

Security Domain:
  Name [mydomain.net Security Domain]:

Begin installation (Yes/No/Quit)? yes

Log file: /var/log/pki/pki-ca-spawn.20160907055340.log
Installing CA into /var/lib/pki/pki-tomcat.
Storing deployment configuration into /etc/sysconfig/pki/tomcat/pki-tomcat/ca/deployment.cfg.
Notice: Trust flag u is set automatically if the private key is present.
Created symlink from /etc/systemd/system/multi-user.target.wants/pki-tomcatd.target to /usr/lib/systemd/system/pki-tomcatd.target.

    ==========================================================================
                                INSTALLATION SUMMARY
    ==========================================================================

      Administrator's username:             caadmin
      Administrator's PKCS #12 file:
            /root/.dogtag/pki-tomcat/ca_admin_cert.p12

      To check the status of the subsystem:
            systemctl status [email protected]

      To restart the subsystem:
            systemctl restart [email protected]

      The URL for the subsystem is:
            https://ca.mydomain.net:8443/ca

      PKI instances will be enabled upon system boot

    ==========================================================================

CAAdmin & Dogtab Web UI (optional)

If you want to use the Dogtab web UI, import the user authentication certificate for caadmin. Using Fedora 24 Workstation (or CentOS 7 Workstation), copy the caadmin certificate to the workstation then add it to Firefox's user certificates. If you receive an authentication error or "You did not provide a valid certificate for this operation" when browsing to "https://host.domain.net:8443/ca" then have not used caadmin's authentication certificate for privileged access.

The caadmin certificate can be found in ~/.dogtag/pki-tomcat/ca_admin_cert.p12. Copy to an admin workstation using scp root@<ip address or hostname:/root/.dogtag/pki-tomcat/ca_admin_cert.p12 .

Import the certificate into Firefox by selecting menu, Preferences, Advanced, View Certificates, Your Certificates, then Import. Once complete, you will find "PKI Administrator" under "Your Certificates."

Next

Next article in the series is Identity Management with FreeIPA Server 4.3 on Fedora 24.

⚠️ **GitHub.com Fallback** ⚠️