Instalar OpenCa en Debian Squeeze con Base de Datos Mysql
INSTALACIÓN DE OPEN-CA Debian Squeeze 6.0 con Base de datos Mysql.
Instalación de un solo Nodo:
Es decir la Autoridad Certificadora (CA), Autoridad de Registro (RA) con sus Bases de datos, van a estar en el mismo servidor, es decir que esta guía aplica para un solo Host.
La guía consta de 4 pasos:
instalación de paquetes necesarios
instalación de OpenCa-tools
?
Instalación de OpenCa-base
? y
adecuación de apache para conexión Segura y Openca.
Tomado de Version del Manual: 0.1 José Pertuz y actualizado por Omar Andres Zapata (Para corregir los multiples bugs en perl y soporte a las nuevas versiones de openssl)
El primer paso es descargar los paquetes de la Pagina de OpenCA:
http://www.openca.org/
http://ftp.openca.org/openca/
Utilizaremos los siguientes paquetes:
OpenCA-Tools: openca-tools-1.3.0.tar.gz
OpenCA-base: openca-base-1.1.1.tar.gz
fixes (parche de reparación) De un bug que tiene la versión 1.1.1 de OpenCa-Base
?
INSTALACION DE DEPENDENCIAS
Lo primero es instalar todas las dependencias necesaria desde los repositorios oficiales de debian Primero instalamos la base de datos Mysql que nos va a servir para la CA y la RA.
aptitude install mysql-server
Crear la Base de Datos openca: En esta guía para hacerlo mas sencillo cree la base de datos openca y el usuario que utilice fue root, para producción si es recomendado crear un usuario que se encargue de la base de datos openca, la clave de root de mysql que coloque es 123456
Ahora Instalamos dependencias para
OpenCa y tools: Esta dividido en 4 bloques de instalación, hago la observación ya que en la web no hay mucha información precisa sobre la instalación de OpenCA, Así que pueda que exista algún paquete que este demás, pero eso es algo que mas adelante ire depurando.
aptitude install apache2 gawk libssl-dev libdbi-perl libdb-dev libxml-perl libauthen-sasl-perl libcgi-session-perl \
libconvert-asn1-perl libdigest-hmac-perl libdigest-md5-perl libdigest-sha1-perl libio-socket-ssl-perl libio-stringy-perl \
libmime-base64-perl libmime-tools-perl libnetserver-generic-perl libparse-recdescent-perl liburi-perl libx500-dn-perl \
libxml-twig-perl libintl-perl libdbd-pg-perl libdbd-mysql-perl
aptitude install libapache2-mod-perl2 libcgi-session-perl libxml-parser-perl libauthen-sasl-perl libconvert-asn1-perl \
libdigest-hmac-perl libdigest-sha1-perl libintl-perl libio-socket-ssl-perl libio-stringy-perl libmime-lite-perl libmime-perl \
libmailtools-perl libnet-server-perl libnet-ldap-perl libparse-recdescent-perl libx500-dn-perl libxml-twig-perl libdbd-pg-perl \
libdbi-perl libpg-perl libxml-dom-perl libxml-sax-perl libglib-perl perl perl-modules libldap2-dev libdigest-md2-perl \
libdigest-md4-perl liburi-perl libpgp-sign-perl
aptitude install gfortran libdbix-xml-rdb-perl libqd-dev libcgi-xml-perl libextutils-f77-perl fort77 libxml-perl libxml-regexp-perl
aptitude install module-assistant
Luego Ejecutamos:
Aquí terminamos la Instalación de Paquetes para que openCa funcione bien.
Instalamos OpenCa-tools
?.
crear la carpeta openca en /usr/local/openca y aquí descomprimimos los archivos descargados.
Ejecutar dentro de /usr/local/openca/openca-tools-1.3.0/
./configure --prefix=/usr/local/openca --with-openca-prefix=/usr/local/openca
make clean
make
make install
Luego entramos a /usr/bin/
Y creamos los enlaces simbólicos.
cd /usr/bin/
ln -s /usr/local/openca/bin/openca-crmf .
ln -s /usr/local/openca/bin/openca-scep .
ln -s /usr/local/openca/bin/openca-sv .
chmod -R +x /usr/local/openca
Con esto ya se encuenta instalado el paquete openca-tools.
INSTALACIÓN DE OPENCA-BASE
Instalaciónde OpenCA-base
Creamos la carpeta AC en /usr/local/openca
mkdir /usr/local/openca/AC
Crear dentro de /usr/local/openca/openca-base-1.1.1 un archivo llamado compilar.sh con permisos de
ejecución, su contenido sera lo siguiente:
#!/bin/bash
./configure \
--prefix=/usr/local/openca/AC \
--with-module-prefix=/usr/local/openca/AC/modules \
--with-openca-prefix=/usr/local/openca/AC \
--with-web-host=localhost \
--with-httpd-user=www-data \
--with-httpd-group=www-data \
--with-httpd-fs-prefix=/var/www/openca \
--with-cgi-fs-prefix=/var/www/cgi-bin \
--with-ca-country="CO" \
--with-ca-state="Antioquia" \
--with-ca-locality="Medellin" \
--with-ca-organization="Sistema de Certificados Electrónicos" \
--with-service-mail-account="omazapa@gfif.udea.edu.co" \
--with-db-name=openca \
--with-db-host=localhost \
--with-db-user=root \
--with-db-passwd=123456 \
--with-db-type=mysql \
--with-db-port=3306
# FIN
Luego ejecutamos el archivo compilar.sh
puede tomar tiempo el: checking getting latest version information…
Al terminar la configuración del compilar.sh debemos tener una salida como esta:
Installation Details:
===
OpenCA Server:
- OpenCA prefix .................: /usr/local/openca/AC
- Build prefix ..................:
- OpenCA User ...................: root
- OpenCA Group ..................: root
- OpenCA Tools prefix ...........:
Web Server:
- httpd User ....................: www-data
- httpd Group ...................: www-data
- httpd prefix ..................: /var/www/openca
- htdocs prefix .................: /var/www/openca/html/pki
- cgi prefix ....................: /var/www/cgi-bin
- htdocs URL prefix .............: /pki
- cgi URL prefix ................: /cgi-bin/pki
Other:
- OpenSSL Prefix ................: /usr
- OpenSSL Libs ..................: -Wl,-rpath,/usr/lib -L/usr/lib -L/usr -lcrypto -lssl
Done.
System Configured for: Debian
Please now use 'make' to build the components.
Use 'make install-offline' for the CA installation and
use 'make install-online' for RA/Public interface installation
More targets are available. Use 'make help' for a full list.
Es muy importante que los valores mostrados no queden en blanco. Sobre todo el
OpenCa prefix. Ahora procedemos a instalar
make clean
make
make test
- Para instalar CA:
- Para Instalar RA:
Copiar los fixes de reparacion (para corregir el error de /etc/init.d/openca start mas adelante)
cd fixes/
cp User.pm /usr/local/openca/AC/modules/perl5/OpenCA/
cp initServer /usr/local/openca/AC/lib/openca/functions/
Luego en: /usr/local/openca/AC/etc/openca/ ejecutar: configure_etc.sh
cd /usr/local/openca/AC/etc/openca/
sh configure_etc.sh
- Creamos el Enlance del demonio OpenCA
cd /etc/init.d/
ln -s /usr/local/openca/AC/etc/init.d/openca .
Con rcconf puede habilitar para que openca se inicie automaticamente al iniciar el sistema operativo.
- Iniciamos OpenCA
Nos va a pedir clave, esa es la clave del administrador web de ac, ar, ldap y node Hasta Este punto,
OpenCa ya esta instalado en el Equipo.
Ahora vamos con la parte Web (apache)
Habilitar https (conexion segura en Apache2)
Crear el certificado para el servidor (https), utilizaremos OpenSSL para generar la clave y el certificado para la conexion segura de apache (https) Openca, no puede trabajar con http.
Los certificados los voy a crear en /etc/apache2/
Creamos el .key (la clave del certificado)
openssl genrsa -des3 -out clave.key 2048
Creamos la peticion .csr (peticion de certificado)
openssl req -new -key clave.key -out peticion.csr
Creamos el certificado.
openssl x509 -req -days 365 -sha256 -in peticion.csr -signkey clave.key -out certificado.crt
Teniendo la clave (.key) y el certificado (.crt) habilitamos el modulo ssl de Apache
Deshabilitar sitio por defecto de apache2:(Opcional)
Habilitar sitio: ssl
Recuerden hacer los respectivos reload y force-reload al apache
Nota: Adecuar el sitio default-ssl para que tome los certificados creados y la conexion sea https, estas 2 lineas deben activarla con la ruta del certificado y la clave:
SSLCertificateFile /etc/apache2/certificado.crt
SSLCertificateKeyFile /etc/apache2/clave.key
INGRESO A OPENCA
Hay un pequeño detalle con los reedireccionamientos de los index de las aplicaciones. Para ello el contenido de /var/www/cgi-bin/
lo copie en /var/www/cgi-bin/pki (deben crear la carpeta pki)
sitio de defaul-ssl quedo asi en el bloque de configuracion:
DocumentRoot /var/www/openca
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/cgi-bin/pki>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory “/var/www/cgi-bin/”>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Los link para ingresar son:
Para AC:
https://gfif.udea.edu.co/pki/ca
Para AR:
https://gfif.udea.edu.co/pki/ra
Para Node:
https://gfif.udea.edu.co/pki/node
Para LDAP:
https://gfif.udea.edu.co/pki/ldap
Para BACTH:
https://gfif.udea.edu.co/pki/batch
Para PUB: (Publica)
https://gfif.udea.edu.co/pki/pub
Inicio de OpenCA:
Iniciar la Base de Datos: Logueados en el sistema CA
https://gfif.udea.edu.co/pki/ca
Deben Inicializar la BBdd para que se creen las tablas en la bd Openca
Una vez iniciada la BBDD deben verificar que las tablas fueron creadas:
mysql> show tables;
+——————————————————+
| Tables_in_openca |
+——————————————————+
| ca_certificate |
| certificate |
| crl |
| crr |
| messages |
| request |
| user |
| user_data |
+——————————————————+
8 rows in set (0.00 sec)
Crea 8 tablas en la base de datos Openca.
Lo demas es interactuar con la aplicacion Web, crear la RA, etc.
La guía la he seguido 2 veces y funciona bien, no deben tener problemas si sigues los pasos con precisión, cualquier observación o corrección que quieran aportar sera bien recibida.
Recuerden que el tema de certificados se basa en 3 pasos: clave (.key), petición (.csr), certificado (cst, pem, p12, etc)
Basado en
http://jpertuz.wordpress.com/pki-con-openssl/
Algunos posibles errores
En el ra
Error Code: 6251043
[initServer:314] Aborting connection - you are using a too short symmetric keylength ().
Editamos
nano /etc/apache2/sites-enabled/default-ssl
añadimos en la sección de configuración SSL
Compilando openca-base
Building (Net::SSLeay::136) ... ERROR::Can not build module
aplicamos el siguiente diff en
/usr/local/openca/openca-base-1.3.0/src/ext-modules/Net-SSLeay-1.40/
diff -ur a/src/Makefile b/src/Makefile
--- a/src/Makefile 2008-10-07 23:13:13.000000000 +0200
+++ b/src/Makefile 2012-09-19 13:06:21.000000000 +0200
@@ -7,7 +7,6 @@
COMMON_DIR = common
MODULE_DIR = modules
-EXT_MODULE_DIR = ext-modules
OCSPD_DIR = ocspd
SCEP_DIR = scep
OPENCA_SV = openca-sv
@@ -17,7 +16,6 @@
SUBDIRS = \
$(COMMON_DIR) \
$(MODULE_DIR) \
- $(EXT_MODULE_DIR) \
$(SCRIPT_DIR) \
$(WEB_DIR)
@@ -48,11 +46,9 @@
@if [ $(package_build) != "yes" ]; then \
echo installing modules because it is not a package build; \
$(MAKE) $(MODULE_DIR) SUBTARGET=install; \
- $(MAKE) $(EXT_MODULE_DIR) SUBTARGET=install; \
else \
echo not installing modules because it is a package build; \
$(MAKE) $(MODULE_DIR) SUBTARGET=install; \
- $(MAKE) $(EXT_MODULE_DIR) SUBTARGET=install; \
fi
# $(MAKE) $(OPENCA_SV) SUBTARGET=install; \
@@ -68,7 +64,6 @@
install-modules:
@$(MAKE) $(MODULE_DIR) SUBTARGET=install
- @$(MAKE) $(EXT_MODULE_DIR) SUBTARGET=install
test clean distclean::
$(MAKE) $(SUBDIRS) SUBTARGET=$@