miércoles, 17 de diciembre de 2014

No xauth program cannot forward with spoofing

Al  tratar de realizar una conexión SSH con ambiente gráfico a un Servidor Solaris 11, me tope con el problema que al ejecutar un comando "xeyes" o "xclock" para verificar el ambiente gráfico, resulta que no se abría ninguno de estos clientes y se mostraba el mensaje "Can't open display".

Trate ejecutando como usuario root el comando "xhost +" con la finalidad que todos los usuarios pudiesen conectarse sin problemas, no obstante el problema persistía. Al ver el contenido de la variable DISPLAY, ésta no contenía nada y al tratar de asignar un valor a ésta como "IP:0.0" no parecía funcionar.

Por ultimo decidí realizar un debug del intento de conexión, para mi sorpresa encontré lo siguiente luego de ingresar el password del Servidor:

Password: 
debug1: Authentication succeeded (keyboard-interactive).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Requesting X11 forwarding with authentication spoofing.
debug1: Sending environment.
debug1: Sending env XMODIFIERS = @im=none
debug1: Sending env LANG = en_US.UTF-8
debug1: Remote: No xauth program; cannot forward with spoofing.
debug1: Remote: Channel 0 set: LANG=en_US.UTF-8
Last login: Mon Dec 15 18:52:10 2014 from 192.168.1.59
Oracle Corporation      SunOS 5.11      11.2    June 2014
oracle@miservidor:~$

Respuesta: el paquete "xauth" no se encuentra instalado en el sistema. Instale el paquete con "pkg install xauth" y luego realice unas pruebas y funciono.

Saludos!



viernes, 17 de octubre de 2014

Weblogic Keystores

Al instalar Oracle Weblogic, por defecto en cada instalación se nos provee de 2 Keystores que podemos utilizar con fines de prueba para la configuración segura SSL. Estos Keystore son:

  • DemoIdentity.jks: el cual contiene una llave privada como demostración y es el que demuestra la identidad del Weblogic.
  • DemoTrust.jks: el cual contiene una lista de Autoridades Certificadoras de confianza y le permite establecer la confianza al Weblogic.

Estos Keystores se encuentran ubicados en la siguiente ruta:

Windows:
%MW_HOME%\wlserver_10.3\server\lib

Unix:
$MW_HOME/wlserver_10.3/server/lib


Las contraseñas de cada Keystore son las siguientes:

DemoIdentity.jks:  DemoIdentityKeyStorePassPhrase

DemoTrust.jks:  DemoTrustKeyStorePassPhrase

Si quisiéramos visualizar el contenido de cada uno de ellos lo podemos hacer a través de la herramienta de Java "Keytool" y utilizando las contraseñas anteriores, por ejemplo:

keytool -list -keystore <ruta_keystore> -v


miércoles, 8 de octubre de 2014

The name of the driver class for the datasource is missing

Resulta que un día de estos para un proyecto JPA, estaba tratando de crear unas entidades a partir de unas tablas de una Base de Datos Oracle 11g, de repente el asistente me muestra el error "The name of the driver class for the datasource is missing".

Luego de darle varias vueltas encontré que debía agregar una propiedad al pool de conexiones que tenia en mi Glassfish, resulta que al parecer Netbeans no logra obtener de alguna forma el nombre del Driver por lo cual arroja ese mensaje.

Les dejo a continuación una imagen de como se ven las propiedades de mi pool de conexiones:



Con agregar la propiedad "driverClass" y especificar el nombre de la clase del Driver se resuelve el problema y ya no aparece el mensaje y se puede continuar con la creación de las entidades.

Esto me sucedio con Glassfish4 y Netbeans8.


jueves, 26 de junio de 2014

Error al Instalar Forms11g en Red Hat EL 6

Una de las tareas que debemos realizar previo a la instalación de Forms u otro producto Middleware de Oracle es revisar que nuestro sistema Unix cumple con los requerimientos de Paquetes, Kernel etc.

Para el caso usamos las guias de instalación como la siguiente para revisar versiones de paquetes etc.
http://docs.oracle.com/html/E18558_01/fusion_requirements.htm

En la guía anterior no se listan por completo o no son muy específicos en las versiones de que paquetes instalar, lo cual puede resultar en errores como el siguiente:

Error in invoking target 'install' of makefile
'/u01/app/oracle/product/11.1.2.1/Middleware/Oracle_FRHome1/sqlplus/lib/ins_sqlplus.mk'. 

Es por ello que aunque la guía no lo mencione debemos instalar los siguientes paquetes:

  • glibc-devel.i686
  • libgcc.i686
  • libstdc++.i686
  • libstdc++-devel.i686
  • openmotif.x86_64
  • openmotif22.x86_64
  • compat-libcap1.x86_64
Se deben instalar los paquetes en versiones i686 y x86_64.

Una vez instalando los paquetes re-instalamos y ya no nos dará el mensaje de error anterior.

jueves, 1 de mayo de 2014

Como crear un ACL para Base de Datos 11g o 12c

Acciones como enviar un correo, consultar un servidor LDAP (OID, Active Directory), conectarse a un servidor FTP desde la base de datos, puede generar un error como el siguiente:

RA-24247: network access denied by access control list (ACL)
ORA-06512: at "SYS.DBMS_LDAP_API_FFI", line 25
ORA-06512: at "SYS.DBMS_LDAP", line 57

Esto se debe a que por seguridad toda aquella conexión desde adentro de la base de datos no se encuentra autorizada, para ello debemos crear un ACL, con la cual otorgamos el permiso para un usuario/s dado/s puedan realizar la conexión y demás tares que requiere.

La creación de un ACL se debe hacer con el usuario SYS y consta de 2 partes:

Si por ejemplo le queremos dar permiso a un usuario "carlos" para que pueda realizar conexión a un servidor de OID primero debemos crear la ACL de la siguiente manera:

BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl => 'AccesoOID.xml',
description => 'Permisos para acceder a OID',
principal => 'carlos',
is_grant => TRUE,
privilege => 'connect'
);
COMMIT;
END;
/

Posterior a ello debemos de especificar el nombre del host y puerto de donde se encuentra nuestro Servidor de OID:

BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl => 'AccesoOID.xml',
host => 'oidServer.com',
lower_port => 3060,
upper_port => null);
COMMIT;
END;
/

Con lo anterior si tratamos de realizar una conexión desde la base de datos ya no tendremos problemas.

Como cambiar el Hostname en Red Hat

Para cambiar el hostname de un servidor Red Hat y que éste se preserve luego de un reinicio debemos modificar el archivo: /etc/sysconfig/network

En el cual deberemos colocar el nuevo nombre de nuestro servidor como valor en la variable HOSTNAME:

NETWORKING=yes
HOSTNAME=forms11gr2

Si queremos que el cambio sea temporal ejecutamos:

# hostname <hostname>

lunes, 28 de abril de 2014

Como cambiar el Idioma de la pantalla de Login de Access Manager 11gR2

Antes de la versión 11.1.2.1 Oracle Access Manager se basaba en las preferencias del navegador (accept-language http header) para determinar en que idioma se desplegaría la ventana de Login. No obstane con la versión R2 de OAM éste comportamiento cambio, ahora se debe especificar que idioma queremos que se muestre a través del uso del comando configOAMLoginPagePref.

Para cambiar por ejemplo que se muestre la pantalla de Login en español debemos seguir los siguientes pasos:

  • Configuramos las variables de ambiente ejecutando para ello el archivo DOMAIN_HOME/bin/setDomainEnv.sh
  • Iniciando WLST a través del archivo: ORACLE_HOME/common/bin/wlst.sh
  • Nos conectamos al dominio a través del comando: connect()
  • Estando ya conectados ejecutamos el comando:
wls:/OAMDomain/serverConfig> configOAMLoginPagePref(persistentCookie="true", persistentCookieLifetime=15, langPrefCookieDomain="oracle.com", langPrefOrder="serverOverrideLangPref, 
oamPrefsCookie, browserAcceptLanguage, defaultLanguage", serverOverrideLanguage="es", defaultLanguage="es", applicationSupportedLocales="es,en")

El comando anterior hará que el Español sea el lenguaje mostrado por defecto y dará la opción de cambiar el idioma entre Español e Ingles.

  • Posteriormente al recibir el mensaje "Command executed successfully" nos desconectamos del WLST
  • Reiniciamos el Servidor de OAM
  • Probamos el acceso y obtendremos un resultado parecido al siguiente:



viernes, 7 de marzo de 2014

Obtener la Arquitectura del JDK (32 bits o 64 bits) en Unix

Si estamos en una plataforma que usa JDK híbrido como se es el caso de HP-PA, HP-IA o Solaris, el uso del argumento '-d64' es requerido.

Por ejemplo en Solaris 11 Sparc de 64bits:

java -d64 -version



Si estamos usando un JDK de 64bits éste comando nos mostrara correctamente que la versión es de 64bits, de lo contrario nos mostrará que la JVM no soporta 64bits. 

Nota: El uso del argumento '-d64' aparece desde la versión 1.7 por lo que en versiones anteriores no funcionara.


jueves, 6 de marzo de 2014

Localización de archivos oraInst.loc y oratab en Solaris 11

Estos archivos los encontramos comúnmente en Linux o en AIX en la ruta /etc no obstante para un Unix como es el caso de Solaris, la ruta donde se encuentran estos archivos es diferente.

En Solaris los encontramos en la ruta /var/opt/oracle


sun.security.pkcs11.ConfigurationException Unknown keyword 'useEcX963Encoding'

Cuando se está configurando Forms/Reports11gR2 en Solaris 11 Sparc y utilizar Jdk 1.7 puede que el asistente se quede en el paso de crear el servidor administrado WLS_FORMS. Si vamos a ver el log de éste Servidor veremos el siguiente mensaje de error:

java.lang.ExceptionInInitializerError
        at weblogic.rjvm.LocalRJVM.getLocalRJVM(LocalRJVM.java:72)
        at weblogic.rjvm.JVMID.<init>(JVMID.java:373)
        at weblogic.rjvm.JVMID.setLocalID(JVMID.java:239)
        at weblogic.rjvm.RJVMService.setJVMID(RJVMService.java:48)
        at weblogic.rjvm.RJVMService.start(RJVMService.java:30)
        at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
        at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused By: java.security.ProviderException: Error parsing configuration
        at sun.security.pkcs11.Config.getConfig(Config.java:71)
        at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:110)
        at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:86)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:224)
        at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:206)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206)
        at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187)
        at sun.security.jca.ProviderList.getProvider(ProviderList.java:232)
        at sun.security.jca.ProviderList$3.get(ProviderList.java:147)
        at sun.security.jca.ProviderList$3.get(ProviderList.java:142)
        at java.util.AbstractList$Itr.next(AbstractList.java:358)
        at java.security.SecureRandom.getPrngAlgorithm(SecureRandom.java:542)
        at java.security.SecureRandom.getDefaultPRNG(SecureRandom.java:187)
        at java.security.SecureRandom.<init>(SecureRandom.java:155)
        at weblogic.rjvm.LocalRJVM.<init>(LocalRJVM.java:90)
        at weblogic.rjvm.LocalRJVM.<init>(LocalRJVM.java:28)
        at weblogic.rjvm.LocalRJVM$LocalRJVMMaker.<clinit>(LocalRJVM.java:31)
        at weblogic.rjvm.LocalRJVM.getLocalRJVM(LocalRJVM.java:72)
        at weblogic.rjvm.JVMID.<init>(JVMID.java:373)
        at weblogic.rjvm.JVMID.setLocalID(JVMID.java:239)
        at weblogic.rjvm.RJVMService.setJVMID(RJVMService.java:48)
        at weblogic.rjvm.RJVMService.start(RJVMService.java:30)
        at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused By: java.security.ProviderException: Error parsing configuration
        at sun.security.pkcs11.Config.getConfig(Config.java:71)
        at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:110)
        at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:86)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:224)
        at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:206)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206)
        at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187)
        at sun.security.jca.ProviderList.getProvider(ProviderList.java:232)
        at sun.security.jca.ProviderList$3.get(ProviderList.java:147)
        at sun.security.jca.ProviderList$3.get(ProviderList.java:142)
        at java.util.AbstractList$Itr.next(AbstractList.java:358)
        at java.security.SecureRandom.getPrngAlgorithm(SecureRandom.java:542)
        at java.security.SecureRandom.getDefaultPRNG(SecureRandom.java:187)
        at java.security.SecureRandom.<init>(SecureRandom.java:155)
        at weblogic.rjvm.LocalRJVM.<init>(LocalRJVM.java:90)
        at weblogic.rjvm.LocalRJVM.<init>(LocalRJVM.java:28)
        at weblogic.rjvm.LocalRJVM$LocalRJVMMaker.<clinit>(LocalRJVM.java:31)
        at weblogic.rjvm.LocalRJVM.getLocalRJVM(LocalRJVM.java:72)
        at weblogic.rjvm.JVMID.<init>(JVMID.java:373)
        at weblogic.rjvm.JVMID.setLocalID(JVMID.java:239)
        at weblogic.rjvm.RJVMService.setJVMID(RJVMService.java:48)
        at weblogic.rjvm.RJVMService.start(RJVMService.java:30)
        at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
        at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused By: sun.security.pkcs11.ConfigurationException: Unknown keyword 'useEcX963Encoding', line 15
        at sun.security.pkcs11.Config.parse(Config.java:425)
        at sun.security.pkcs11.Config.<init>(Config.java:194)
        at sun.security.pkcs11.Config.getConfig(Config.java:67)

Para solucionar este error lo que debemos hacer es ir a modificar el archivo java.security que se encuentra en la ruta $JAVA_HOME/jre/lib/security

En el modificamos y quitamos la entrada siguiente:

security.provider.1=com.oracle.security.ucrypto.UcryptoProvider ${java.home}/lib/security/ucrypto-solaris.cfg
security.provider.2=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/sunpkcs11-solaris.cfg
security.provider.3=sun.security.provider.Sun
security.provider.4=sun.security.rsa.SunRsaSign
.....

A:

security.provider.1=com.oracle.security.ucrypto.UcryptoProvider ${java.home}/lib/security/ucrypto-solaris.cfg
security.provider.2=sun.security.provider.Sun
security.provider.3=sun.security.rsa.SunRsaSign
....

Nota: Asegurarse de reajustar el correlativo de los provider 1,2,3,4....

Luego de éste cambio reintentamos el paso en el cual se quedo el  asistente y continuará sin problemas.

Nota2: Otro workaround por éste error sería utilizar JDK 1.6


viernes, 7 de febrero de 2014

Instalar JDK 1.7 en Oracle Solaris 11

Resulta que tuve que instalar un JDK 1.7 64bits en Oracle Solaris 11 para una instalación que tengo que realizar de Forms y pues nunca pensé que éste tipo de instalación me diera alguna clase de problema, pero resulta que si tiene su truco poder completarla.

Luego de haber descomprimido el JDK descargado (que pesa como 16MB) y posteriormente ejecutar el comando "java -version" obtuve la siguiente salida:

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

Resulta que éste JDK por su tamaño al parecer no viene por completo, que se debe hacer ?? se debe hacer lo siguiente:

- Bajar el JDK 1.7 32bits
- Bajar el JDK 1.7 64bits
- Descomprimir primero el JDK de 32bits
- Descomprimir posteriormente el JDK de 64bits en el mismo lugar donde está el de 32bits (solo debe quedar una carpeta).

En otras palabras se combina los dos JDK, es por ello que el JDK de 64bits es tan pequeño en tamaño, pues al final hay que combinarlo con el de 32bits. Haciendo eso el "java -version" ya muestra la salida correctamente.

domingo, 2 de febrero de 2014

Acceder directamente como usuario root en Solaris 11

Por defecto, luego de haber instalado Solaris 11 no se puede acceder directamente como usuario root. Esto se debe a que éste se encuentra como rol.

Veremos un mensaje como el siguiente:
Roles can not login directly


Accedamos como un usuario administrador, hacemos su a root e invocamos el comando cat /etc/user_attr para ver los atributos de los usuarios, con lo que veremos que efectivamente root es un rol:


Para arreglar esto siempre como usuario root ejecutamos el comando: rolemod -K type=normal root


Con ésto ya podremos iniciar sesión como usuario root.