sábado, 5 de octubre de 2019

Matar todas las conexiones con un SELECT

Hola, a veces queremos matar todas las conexiones a una base de datos en un SGBD PostgreSQL sin tener que reiniciar el servicio; pues es muy sencillo, solo debes ejecutar la siguiente instrucción:


SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TuBasedeDatos'  AND pid <> pg_backend_pid();

Y listo!!
Bytes

sábado, 19 de enero de 2019

Formatear y usar fechas en Java sin usar la clase "Deprecada" Date

La nueva clase que se debe usar para fechas es GregorianCalendar, hay toda una explicación técnica de porque ya no se debe usar la vieja y fiel Date en: https://docs.oracle.com/javase/8/docs/api/java/util/Date.html

Bueno a lo nuestro con el ejemplo


public static void main(String[] args) {
       
        SimpleDateFormat fechaformat2 = new SimpleDateFormat("EEEE',' dd 'de' MMMM 'del' yyyy", new Locale("es", "PE"));
        GregorianCalendar fecha = new GregorianCalendar();
       
        System.out.println(fechaformat2.format(fecha.getTime()) );
       
        fechaformat2.applyPattern("dd/MM/yyyy");
        System.out.println(fechaformat2.format(fecha.getTime()) );
           
    }

Listo.. bytes

domingo, 16 de diciembre de 2018

Instalar SSL en Tomcat 7 facil con .pfx o .p12

Holas, una manera fácil de activar https o SSL en tomcat con un certificado digital ya emitido. Pasos para Centos 6 y Tomcat 7.

1. Generamos el archivo pfx o p12 si no lo tuviéramos. Se debe tener el .cer el .key y el .cer de la Autoridad Certificadora:

openssl pkcs12 -export -in micertificado.crt -inkey miclaveprivada.key -out mipkcs12.p12 -name tomcat -CAfile certificadodeca.crt -caname root -chain

Te va a pedir la clave privada, la colocas dos veces y ya.
Esto genera un archivo mipkcs12.p12

*Actualizacion: Si al usar el comando anterior te da el error "Error unable to get issuer certificate getting chain.", entonces debes hacer lo siguiente (al menos en Centos 6 fue asi):

cat certificadodeca.crt /etc/ssl/certs/ca-bundle.crt > allcacerts.crt

eso te genera un nuevo archivo allcacerts.crt, usas este archivo como el certificado de la  Autoridad Certificadora, asi que el comando a ejecutar ahora seria como sigue:

openssl pkcs12 -export -in micertificado.crt -inkey miclaveprivada.key -out mipkcs12.p12 -name tomcat -CAfile allcacerts.crt -caname root -chain

listo!! ahora si.. a poner clave y te genera el .p12


2. Modificamos el archivo server.xml de Tomcat 7 y agregamos el siguiente conector:

          port="8443" minProcessors="5" maxProcessors="75"
          enableLookups="true" disableUploadTimeout="true"
          acceptCount="100"  maxThreads="200"
          scheme="https" secure="true" SSLEnabled="true"
          keystoreFile="mipkcs12.p12"
          keystorePass="tuclaveprivada"
          keystoreType="PKCS12" />

En el parámetro keystoreFile="mipkcs12.p12" deben poner la ruta completa donde esta ubicado su archivo.
No estoy muy seguro de estos dos parámetros minProcessors="5" maxProcessors="75", pero funciona. Guardas, reinicias Tomcat y listo.. ya tienes tomcat en puerto 8443 con tu certificado.
Bytes


Referencias:
https://www.tbs-certificates.co.uk/FAQ/en/118.html
https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html#Prepare_the_Certificate_Keystore

https://superuser.com/questions/1142555/openssl-p12-generation-failing-with-ca-bundle-chain-option