viernes, diciembre 28, 2007

Sobre los contenidos universitarios

Ricardo Galli cita muy oportunamente en su blog a Joel Spolsky durante una conferencia en la Universidad de Yale:
En las instituciones de la Ivy League todo es Unix, programación funcional, y cosas teóricas acerca de máquinas de estados. A medida que bajas en la cadena a escuelas menos selectivas empieza a aparecer Java. Aún más abajo literalmente empiezas a ver clases en tema como introducción a Microsoft Visual Studio, tres créditos. Cuando llegas a instituciones con estudios de dos años ves cosas como cursos de certificación SQL-Server-en-21-días que emiten los fines de semana en la TV por cable. — Joel Spolsky
Lo mejor de todo: la pregunta que formula Ricardo.

jueves, diciembre 06, 2007

Java 1.4, los certificados, y la p...

Ayer estuve una hora tratando de que la herramienta keytool de java 1.4 importe un certificado. Sí, ya sé que esa versión es obsoleta, pero en este caso no hay otra opción. El tema es que luego de miles de pruebas no había forma de que reconociera el certificado como X.509 (aunque realmente fuera así).

Pues bien, importé el certificado en Java 1.5 y ningún drama, entonces armé un nuevo certificado de prueba con una clave de menor longitud y... bingo! la versión 1.4.2 no acepta longitudes de clave mayores a 2048, como era de esperarse debido a restricciones de exportación.

Pero yo quiero mi certificado con clave de 4096 bits! Googleando un poco encontré un hermoso documento donde unos buenos muchachos rusos explican cómo habilitar la utilización de claves de mayor longitud.

Para ello:
  1. Suponiendo que el JRE se encuentra en /usr/lib/j2se/1.4/jre/

  2. Descargar e instalar el jar de BouncyCastle CryptoProvider en $JRE/lib/ext

  3. Descargar e instalar los archivos de la Unlimited Strength Jurisdiction Policy 1.4.2 en $JRE/lib/security

  4. Modificar el archivo $JRE/lib/security/java.security estableciendo los proveedores de seguridad como sigue:
    security.provider.1=sun.security.provider.Sun
    security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider
    security.provider.3=com.sun.net.ssl.internal.ssl.Provider
    security.provider.4=com.sun.rsajca.Provider
    security.provider.5=com.sun.crypto.provider.SunJCE
    security.provider.6=sun.security.jgss.SunProvider
    El de BouncyCastle debe ser el segundo.
Y con eso debería alcanzar para poder utilizar certificados con clave de 4096 bits. O eso espero...
Bueno los dejo por ahora así como algo. Saludos!