Quijost

Por favor ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Búsqueda Avanzada  

Noticias:

Deja tu post en el foro para hacer algun tipo de consulta

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mensajes - Escain

Páginas: [1]
1
Tutoriales y Manuales / Java JDK + Servidor Tomcat SSL
« en: Junio 13, 2011, 02:47:58 am »
Tomcat es un servidor que proporciona acceso a servelet en java, (seguro que habéis visto alguna vez los .jsp o incluso un .war).
En este tutorial trataremos la instalación sobre un servidor CENTOS.
Para acabar de dar seguridad al sistema, explicaremos la instalación con SSL, muy adecuada si pretendemos correr programas propios de gestión por ejemplo.

Como se requiere del JDK de java, se empezará por instalar este.


Objetivos:
  • Instalar el JDK de Java (oracle)
  • Instalar el servidor tomcat
  • Proteger con SSL la comunicación

Consideraciones iniciales:
El servidor tomcat es independiente del httpd, para (re)iniciarlo, se debe ejecutar:
Código: [Seleccionar]
$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

Según el programa que queramos ejecutar, pueden surgir problemas de tamaño de memoria o de tamaño de heap, se trata este tema al final del tutorial.

Supondremos que tiene un nivel de conocimiento mínimo de Linux y sus comandos: mkdir, cd, ls, wget, chown, chmod, rm, etc..

Para empezar crearemos la carpeta necesaria para java y tomcat:
Código: [Seleccionar]
mkdir /usr/java

A continuación instalamos los paquetes necesarios:
Código: [Seleccionar]
yum -y update
yum -y install httpd httpd-devel php php-common php-devel

Instalación del JDK java:
Descargamos el JDK de la página oficial por ejemplo jdk-6u25-linux-x64.bin en nuestro caso, no podemos usar wget porque requiere aceptar unas licencias.
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html
nos descargamos jdk-6u25-linux-x64.bin y lo podemos subir a nuestro servidor mediante:
Código: [Seleccionar]
scp <archivo local> <host>:/usr/java
<pass>

Le damos permisos de ejecución:
Código: [Seleccionar]
chmod +x /usr/java/jdk-6u25-linux-x64.bin

Y lo ejecutamos:
Código: [Seleccionar]
/usr/java/jdk-6u25-linux-x64.bin

Renombramos la carpeta de jdk:
Código: [Seleccionar]
mv /usr/java/jdk-6u25-linux-x64.bin /usr/java/jdk

Ahora es necesario registrar java para que sea conocido por todo el sistema (modificar las variables de entorno):
Vamos al archivo /etc/profile
Código: [Seleccionar]
nano /etc/profile
y casi al final del todo, justo antes de la línea "unset i" añadimos o modificamos para tener lo siguiente (cuidado con los espacios):
Código: [Seleccionar]
JAVA_HOME=/usr/java/jdk
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH
guardamos (Ctrl+x, Y, Enter)
Finalmente para que tengan efectos los cambios realizados:
Código: [Seleccionar]
source /etc/profile

Verificamos que java esta instalado correctamente:
Código: [Seleccionar]
java -version
Que nos debe devolver la versión de java. ;)

Instalación de TOMCAT SSL
Nos descargamos el archivo tomcat desde el sitio oficial, esta vez podemos usar wget:
http://tomcat.apache.org
Código: [Seleccionar]
wget http://apache.cict.fr/tomcat/tomcat-7/v7.0.14/bin/apache-tomcat-7.0.14.tar.gz /usr/java
Descomprimimos:
Código: [Seleccionar]
tar xzf /usr/java/apache-tomcat-7.0.14.tar.gz /usr/java

Renombramos la carpeta:
Código: [Seleccionar]
mv /usr/java/apache-tomcat-7.0.14 /usr/java/tomcat

Modificamos de nuevo el archivo /etc/profile para añadir las variables de entorno de tomcat:
Código: [Seleccionar]
nano /etc/profile
Antes de "unset i" al final del archivo, tenemos:
Código: [Seleccionar]
JAVA_HOME=/usr/java/jdk
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH
Lo editamos para convertirlo en:
Código: [Seleccionar]
JAVA_HOME=/usr/java/jdk
PATH=$PATH:$JAVA_HOME/bin
CATALINA_HOME=/usr/java/tomcat
export JAVA_HOME CATALINA_HOME PATH

Guardamos y actualizamos las variables:
Código: [Seleccionar]
source /etc/profile

Configuración de tomcat:

Creamos las claves para el SSL:
Código: [Seleccionar]
keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/java/tomcat/keystoreHay que responder a algunas preguntas, no tiene dificultad.

Editamos el archivo de configuración de tomcat: /usr/java/tomcat/conf/server.xml
Hay un elemento Connector del estilo de:
Código: [Seleccionar]
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
        redirectPort="8443"
/>
Lo comentamos completamente entre <!-- y -->
Poco a continuación hay otro Connector que ya esta comentado, del estilo de:
Código: [Seleccionar]
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
/>
Lo descomentamos, quitando el <!-- y --> que lo engloban y lo editamos para que sea igual que:
Código: [Seleccionar]
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystorePass="TU CLAVE AQUI"
keystoreFile="/usr/java/tomcat/keystore"
/>
(No olvides de cambiar la clave por la que especificaste al crear el certificado)

Finalmente, lanzamos el servidor tomcat:
Código: [Seleccionar]
/usr/java/tomcat/bin/startup.sh
Podemos probar nuestro servidor tomcat en:
https://<mihost>:8443

 :D

Resolviendo problemas de memoria y heap:
Algunas aplicaciones requieren bastante memoria o un tamaño de heap que superan los límites establecidos inicialmente.
Para resolver estos problemas editamos el archivo /usr/java/tomcat/bin/catalina.sh y justo después de los primeros comentarios, al principio del todo añadimos:
Código: [Seleccionar]
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1536m -XX:NewSize=64m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
Por supuesto puede elegir los valores que quiera, son en MBytes.
Xms es el tamaño mínimo de memoria reservada por tomcat.
Xmx es el tamaño máximo de memoria reservada por tomcat.
XX son los tamaños del heap.

Fin

Espero les haya sido de utilidad.

PROBLEMA SIN RESOLVER:
El servidor no se lanza automáticamente después de un reinicio del servidor, hay que ejecutar $CATALINA_HOME/bin/startup.sh cada vez.

2
Introducción
Con el fin de mejorar este tutorial, aportaré como he configurado el subversion para que responda a través de internet, funcione correctamente con el http://tortoisesvn.net/ y habilitar contraseñas según los proyectos.


Queremos no solo que el subversión funcione, sino que pueda haber varios proyectos en nuestro repertorio y cada uno tenga unos permisos de acceso distintos, de forma que algunos usuarios puedan acceder a ciertos proyectos y otros no.
También deseamos que la comunicación con el servidor sea seguro, mediante https.

Instalación en el servidor con Centos 5
El primer paso es instalar el svn:
Código: [Seleccionar]
yum -y install mod_dav_svn mod_ssl subversion
Crear los distintos repertorios para el subversion:
  • /usr/subversion/svn/ Para guardar los distintos proyectos.
  • /usr/subversion/access/ Para los archivos de permisos, contraseñas y certificados
Código: [Seleccionar]
mkdir /usr/subversion
mkdir /usr/subversion/svn
mkdir /usr/subversion/access

Modificar el propietario/grupo:
Código: [Seleccionar]
chown -R apache /usr/subversion
chgrp -R apache /usr/subversion

Crear un proyecto de prueba:
Código: [Seleccionar]
svnadmin create /usr/subversion/svn/prueba
Crear un fichero de usuarios:
Creamos un fichero de usuario, es un fichero estándar que contiene sencillamente una lista de nombres de usuarios y sus respectivas contraseñas codificadas, del que apache verificará si el usuario tiene los permisos adecuados.
     Nota: los valores entre < y > son a tu elección.
El archivo de usuarios (que vamos a llamar users por ejemplo) lo colocaremos en la carpeta access.
Código: [Seleccionar]
htpasswd -c /usr/subversion/access/users <usuario1>
    <pass>
    <pass>
htpasswd /usr/subversion/access/users <usuario2>
    <pass>
    <pass>
htpasswd /usr/subversion/access/users <usuario3>
    <pass>
    <pass>
...

Configurar el acceso de cada usuario:
Ahora configuraremos un archivo que asigna qué usuarios pueden acceder a qué proyecto. En nuestro caso solo tenemos uno, pero podría haber muchos.
Creamos un archivo (ACL por ejemplo) en nuestra carpeta access:
Código: [Seleccionar]
nano /usr/subversion/access/ACLY escribimos lo siguiente:
Código: [Seleccionar]
[prueba:/]
@pruebaTeam=rw

[groups]
pruebaTeam=usuario1, usuario2

Una pequeña explicación:
Para cada proyecto, escribimos:
Código: [Seleccionar]
[<repoName>:<repoPath>]
<usuario>=<permisos>
<usuario>=<permisos>
...
Nota: los permisos empiezan por ser nulos para todos y se asignan, por lo que si en una linea das por ejemplo "rw" y a la siguiente asignas solo "r", el usuario tendrá "rw"
Los permisos son "r" = lectura, "w"=escritura.

Se pueden crear grupos de usuarios mediante:
Código: [Seleccionar]
[groups]
<nombreGrupo>=<usuario>, <usuario>, ...

Configurar Apache:
Debemos elegir nuestro dominio/directorio que corresponderá al subversion, por ejemplo, en nuestro caso usaremos http://<dominio>/svn/<proyecto>
Accedemos al archivo de configuración del subversion para apache:
Código: [Seleccionar]
nano /etc/httpd/conf.d/subversion.conf
  • Quitamos las lineas de LimitExcept Para que nos pida contraseña también para descargar y no solo para el commit.
  • Añadimos AuthzSVNAccessFile /usr/subversion/access/ACL dentro del Location
  • Modificamos la linea SVNParentPath a /usr/subversion/svn
  • Modificamos la linea <Location.. por <Location /svn>
  • Modificamos la linea AuthUserFile a /usr/subversion/access/users
El archivo final queda aproximadamente como:
Código: [Seleccionar]
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

#diversos comentarios

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

Listen 447

#Elegimos nuestro puerto, por ejemplo 447 para el svn ssl
<VirtualHost miHost:447>
#la raiz no puede ser subversion, para evitar acceso a /access
#style es una buena opción, allí guardaremos la hoja .xsl
DocumentRoot "/usr/subversion/styles"
#nuestro servidor
ServerName miHost
#activar SSL
  SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
#las carpetas de los certificados, aun no creadas
SSLCertificateFile /usr/subversion/access/ssl.crt
SSLCertificateKeyFile /usr/subversion/access/ssl.pem
#la carpeta de subversion, en nuestro caso /svn
<Location /svn>
DAV svn
SVNParentPath /usr/subversion/svn
AuthzSVNAccessFile /usr/subversion/access/ACL
Satisfy all
Require valid-user
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /usr/subversion/access/users
</Location>
</VirtualHost>

No olvides de sustituir miHost por tu host real, por ejemplo: quijost.com

Claves SSL:
El siguiente paso es insertar los certificados si los tenemos: ssl.pem para la clave privada y ssl.crt para el certificado.
En nuestro caso, como no tenemos dinero de sobra, crearemos un certificado auto-firmado:

Código: [Seleccionar]
cd /sur/subversion/access
openssl genrsa -des3 -rand file1:file1 -out ssl.key 1024
openssl rsa -in ssl.key -out ssl.pem
openssl req -new -key ssl.pem -out ssl.csr
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.pem -out ssl.crt
Hay que responder a algunas preguntas, pero tampoco requieren de mucha explicación: claves, nombres, etc.
El .csr es el archivo que hay que pasar a las entidades para que nos proporcionen un certificado real.
También hay que tener en cuenta que el nombre del host no puede ser una IP si queremos un certificado real, y debe ser obligatoriamente el nombre de nuestro servidor web, por ejemplo quijost.com

Iniciamos el servicio:
service httpd start

Otras operaciones interesantes:
Puede hacer un backup de todo el svn con:
Código: [Seleccionar]
svnadmin dump /usr/subversion/svn/prueba > /usr/subversion/prueba.dmp

Y puede volver a cargar un backup mediante:
Código: [Seleccionar]
svnadmin load /usr/subversion/svn/prueba < /usr/subversion/prueba.dmp

Muy práctico para no tener disgustos o para transferir el servidor svn a otro lado.

Espero que les sea útil ;)



Nuestro Subversion esta listo, una vez instalado el TortoiseSVN en tu sobremesa, creas una carpeta y haces un "SVN Checkout" que viene en el menú al hacer clic derecho sobre la carpeta.
Te  pedirá la clave de alguno de los usuarios que hemos creado y listo.
No te olvides de hacer commit después de trabajar.
Puede acceder a el mediante:
https://mihost:447/svn/prueba


Páginas: [1]

Página generada en 0.113 segundos con 38 consultas.