Oracle Wallet. Cómo crearlo con un certificado p12

logo_gpsHola, a todos, hoy nos gustaría compartir con vosotros la forma de crear un wallet de Oracle. para guardar los certificados y poder configurar de esa forma un acceso seguro mediante SSL a la base de datos. Lo haremos por medio de un certificado .p12.

¿Qué es un Oracle Wallet y en qué consiste un certificado p12?

oracle wallet

Oracle Wallet es un directorio dentro del servidor donde están escritas las contraseñas (en forma encriptada), esto nos permite administrar credenciales de bases de datos o certificados. Se puede administrar mediante la herramienta gráfica owm o con comandos mediante mkstore.
Una vez que se tiene configurado, se le indica a la base de datos dónde encontrar el Wallet configurando parámetros específicos en el archivo sqlnet.ora y recuperar por ejemplo una contraseña almacenada haciendo referencia a un alias TNS configurado en su archivo tnsnames.ora. Por lo que no hay servicios que debas iniciar o detener, ni debes instalar nada en particular.
Para acceder al listener mediante SSL hay que configurar el listener.ora indicando el puerto y el protocolo nuevo (TCPS). Hoy solo vamos a ver la forma de cargar un certificado .p12 dentro de nuestro wallet.

El fichero p12 se crea en formato binario donde se guarda el certificado (incluidos sus certificados intermedios) con la clave privada. Los certificados y la clave privada están protegidos en el archivo con una contraseña.

Una vez que hemos visto los términos vamos a ver cómo se crea:

La documentación de Oracle nos dice que podemos renombrar directamente el fichero con la extensión p12 a ewallet.p12 y utilizarlo, pero en ciertos casos nos genera problemas. Estos problemas los hemos visto en versión 11, pero parece que en 12 también puede darse. Lo que hemos detectado es que a la hora de abrir el wallet con el fichero no muestra correctamente el certificado que contiene. ¿Por qué?

Revisando errores de Oracle nos hemos encontrado con este en particular:

Bug 10178208 : USER CERTIFICATE IS NOT VISIBLE IN OWM WITH OPENSSL CREATED WALLETS

Este bug se reporta en 11.1.0.7 pero en 11.2.0.4 lo hemos reproducido igualmente.

Parece que no tiene una solución sencilla a no ser que se aplique el siguiente workaround:

1. Convertimos el wallet p12 a jks
orapki wallet pkcs12_to_jks -wallet ewallet.p12 -jksKeyStoreLoc ewallet.jks -jksKeyStorepwd WalletPass
2. Creamos un nuevo wallet vacío
mkdir /home/oracle/wallet
orapki wallet create -wallet /home/oracle/wallet -pwd WalletPass

Lo creamos con la misma contraseña que el certificado p12 para evitarnos problemas.

3. Importamos al contrario, de jks al wallet vacío nuevo
orapki wallet jks_to_pkcs12 -wallet /home/oracle/wallet -pwd WalletPass -keystore ewallet.jks -jkspwd WalletPass

Y listo, ya tenemos el wallet funcionando con el certificado que hemos generado nosotros mismos.

Esperamos que os sea de utilidad.

Un saludo.

Equipo DBA.

Si no quieres perderte nuestras entradas sobre Oracle, no dudes en suscribirte a nuestra newsletter.