Les voy a comentar brevemente como es el procedimiento para solicitar un certificado ante una entidad certificadora, como en nuestro caso Verisign ...
Generar el CSR
Un CSR (Certificate Sign Request) es una solicitud para generar un certificado digital validado por la entidad certificadora que nos interesa, una analogía sencilla sería cuando vamos a la Secretaría de Relaciones Exteriores y mediante una carta solicitamos por escrito la expedición de un documento como lo es el pasaporte.Características del Certificado
En la solicitud es necesario indicar datos como el periodo por el cual se requiere el certificado, la plataforma operativa donde será instalado como puede ser un Apache sobre UNiX o un IIS sobre Windows, así como un responsable administrativo que sea identificable dentro de la organización, se hace el correspondiente pago y se inicia el proceso; si retomamos la analogía anterior, al SRE nos va a solicitar por cuanto tiempo requerimos sea válido nuestro pasaporte, donde vivimos, IFE, actas de nacimiento, pagamos y listo, se inicia el proceso.Confirmación y emisión del Certificado
Una vez recibida la solicitud, la entidad certificadora realizará un contacto telefónico o por correo electrónico para confirmar que los datos son verídicos; es decir, se hace una _certificación_ de la información del cliente; si todo fue correcto, con la información del CSR se genera un nuevo certificado y se firma por la autoridad certificadora, sobra decir que si retomamos la analogía anterior; si todo fue correcto, nos sera expedido nuestro pasaporte con los sellos y firmas habidas y por haber de la oficina contralora.Este es el panorama general que se suele seguir, a menos claro; que se tenga una consola de administrador en la entidad certificadora, se puedan generar los certificados y firmarlos, solo que una situación así implica tener mucho dinero para comprar todo un lote y administrarlo o tener privilegios como Security Administrator en el dominio raíz dentro de la autoridad certificadora (je!), pero ese será tema de otro post.
IIS/Windows y los wizards
Es muy sabido que la mayoría de las actividades administrativas en plataformas Windows se realiza usando los wizards y esta bien, el problema es que si no se conoce de fondo como se hacen las cosas, muy probablemente estaremos en un problema.Y así fue, ya que en IIS para poder instalar un nuevo certificado o realizar una renovación, el CSR deberá ser generado desde el wizard; de otra manera no tenemos otra opción (visible) para realizarlo: primer problema.
PFX o PEM
PFX (Personal Information Exchange) es un formato que nos permite incluir muchos objetos (certificados) en un solo archivo, cifrandolo con una contraseña en un formato simétrico resultando en un archivo binario; por otro lado el formato PEM (Privacy Enhanced Mail) es un formato que incluye solo un objeto (certificado) pero ya sea cifrado o no, el archivo se encuentra en Base64 resultando ser su contenido en texto plano.Para el caso que nos ocupa, el proveedor nos entregó los archivos en formato PEM y IIS los requería en formato PFX: segundo problema.
Bajo este panorama, fue necesario realizar lo siguiente:
- Convertir los archivos en formato PEM a formato PFX
- Usar la consola de administración de Windows para modificar el componente que gestiona los certificados
Conversión de un formato PEM a un formato PFX
En este punto es necesario aclarar que se cuenta con lo siguiente: una llave privada y el documento firmado por una entidad certificadora (lease "Esquema de Llave Pública"), así que usando OpenSSL creamos un contenedor PFX que incluyera los dos archivos ya mencionados.01: Listado de archivos a trabajar
Los archivos con los que vamos a trabajar (*.key la llave privada, *.csr el requerimiento y el *.pem es el certificado ya firmado)[ 192.168.1.103 | macuarrita ] ~/empresita.com/ssl andresaquino $ ls -l total 24 -rw------- 1 andresaquino admin 1232 Nov 1 01:49 www-empresita.csr -rw------- 1 andresaquino admin 1708 Nov 1 01:49 www-empresita.key -rw------- 1 andresaquino admin 2110 Nov 1 01:49 www-empresita.pem
02: Verificación de la llave y el certificado
En este punto vamos a obtener el módulo (número que se obtiene de multiplicar los primos para generar el par público) que se usó para generar los documentos y que mediante OpenSSL podemos obtener de la llave privada, de la solicitud del certificado y del certificado como tal, esto con la finalidad de validar que hablamos del mismo emisor.[ 192.168.1.103 | macuarrita ] ~/empresita.com/ssl andresaquino $ openssl req \ -noout \ -modulus \ -in www-empresita.csr Modulus=E51184450DA5C27AE10600D04FB51AE1AD2B47E51D8B298EAA40C2E3EF6F89E068E2861BAB738C4B3D784E4EA4730FA628DC45723994AC5ED8FB05A0A0CDB2DE3AD99F803BFB7B9A328A74A1CA...53517E1A16DAF341BF52D89B51070F10108C3C20FCD8200525619018E19310B2299CF35D1034937C397D8E54FC6FEFB3D6D22410F7276D2AF6F [ 192.168.1.103 | macuarrita ] ~/empresita.com/ssl andresaquino $ openssl rsa \ -noout \ -modulus \ -in www-empresita.key Modulus=E51184450DA5C27AE10600D04FB51AE1AD2B47E51D8B298EAA40C2E3EF6F89E068E2861BAB738C4B3D784E4EA4730FA628DC45723994AC5ED8FB05A0A0CDB2DE3AD99F803BFB7B9A328A74A1CA...53517E1A16DAF341BF52D89B51070F10108C3C20FCD8200525619018E19310B2299CF35D1034937C397D8E54FC6FEFB3D6D22410F7276D2AF6F [ 192.168.1.103 | macuarrita ] ~/empresita.com/ssl andresaquino $ openssl x509 \ -noout \ -modulus \ -in www-empresita.pem Modulus=E51184450DA5C27AE10600D04FB51AE1AD2B47E51D8B298EAA40C2E3EF6F89E068E2861BAB738C4B3D784E4EA4730FA628DC45723994AC5ED8FB05A0A0CDB2DE3AD99F803BFB7B9A328A74A1CA...53517E1A16DAF341BF52D89B51070F10108C3C20FCD8200525619018E19310B2299CF35D1034937C397D8E54FC6FEFB3D6D22410F7276D2AF6F
03: Generar un nuevo contenedor PFX
Ya que hemos validado, entonces procedemos a generar el contenedor PFX[ 192.168.1.103 | macuarrita ] ~/empresita.com/ssl andresaquino $ openssl pkcs12 \ -export \ -inkey www-empresita.key \ -in www-empresita.pem \ -name "Mi Empresita" \ -out www-empresita.pfx Enter Export Password: [AQUI_UN_PASSWORD] Verifying - Enter Export Password: [Y_LO_REPETIMOS] [ 192.168.1.103 | macuarrita ] ~/empresita.com/ssl andresaquino $ ls -l total 32 -rw------- 1 andresaquino admin 1232 Nov 1 01:49 www-empresita.csr -rw------- 1 andresaquino admin 1708 Nov 1 01:49 www-empresita.key -rw------- 1 andresaquino admin 2110 Nov 1 01:49 www-empresita.pem -rw-rw---- 1 andresaquino admin 3198 Nov 1 02:55 www-empresita.pfx
04: Verificar el contenedor PFX creado
En este paso, la contraseña que usamos para cifrar el contenedor nos volvera a ser requerida, pero solo con la finalidad de verificar que el contenido es el correcto.[ 192.168.1.103 | macuarrita ] ~/empresita.com/ssl andresaquino $ openssl pkcs12 \ -info \ -nokeys \ -in www-empresita.pfx Enter Import Password: [AQUI_LA_CONTRASEÑA] MAC Iteration 2048 MAC verified OK PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048 Certificate bag Bag Attributes localKeyID: 69 16 29 0D 19 20 13 C3 F0 FB CD EA A4 BC B0 FA AF 8D CB 9E friendlyName: Mi Empresita subject=/C=MX/ST=Edo. de Mexico/Tlalnepantla/L=CIUDAD DE MEXICO/O=Mi Empresita, S.A. de C.V./OU=IT Office/OU=Terms of use at www.verisign.com/rpa (c)05/CN=www.miempresita.com.mx issuer=/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 International Server CA - G3 -----BEGIN CERTIFICATE----- MIIF6DCCBNCgAwIBAgIQZruZw+iic6r7S4gPJIM0XTANBgkqhkiG9w0BAQUFADCB vDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDE2MDQGA1UEAxMt VmVyaVNpZ24gQ2xhc3MgMyBJbnRlcm5hdGlvbmFsIFNlcnZlciBDQSAtIEczMB4X DTExMDkwODAwMDAwMFoXDTE0MTAwNzIzNTk1OVowgesxCzAJBgNVBAYTAk1YMSQw ... c/qHZLgBstj/5wuVvCUUStsnku+2EbNtD7eyPuF+qpqNGHmXqGuFc2vttA4O5ZKu 3GrW9z9Gb30Z0UCktw4WXAp4oJdPDNQ+xnyhj7/TsUZvR9B2f5xEINRU7drXmoAF TSojYOYBRXkqshP9nB0oSvoQ7X0z60gHjKvLog== -----END CERTIFICATE----- PKCS7 Data Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Listo, ya que contábamos con el contenedor PFX fue momento de movernos a la parte más aburrida del camino: Windows & IIS (je!)
Usando la Consola de Administración de Windows
Para poder instalar este certificado sin pasar por la penuria de los wizards, vamos a ingresar con la MMC (Microsoft Management Console) para levantar el componente o Snap-In (se lee cool verdad "Snap-In", yeah!) que administra los certificados en el sistema y registrar desde este punto, nuestro certificado.Snap-In
Dice la documentación que un Snap-in es un componente independiente el cual se puede administrar mediante la consola de administración de Windows (sic), para ello levantamos la consola con el comando "mmc" y registramos el Snap-In que queremos usar, veamos!
05: Ingresar a la consola (mmc)
Start Menu » Command Run » mmc
06: Registrar un Snap-In
Add/Remove Snap-In
07: Seleccionar el Snap-In de certificados
Add/Remove Snap-In » Add Standalone Snap-In
08: Indicarle que son los que contiene el equipo localmente
Add/Remove Snap-In » Add Standalone Snap-In » Select Computer
09: Seleccionamos el almacén personal e importamos un nuevo certificado
Console Root » Certificates » Personal » Certificates » All Tasks » Import ...

10: Ingresamos la contraseña y registramos en el mismo almacén
Certificate Import Wizard » Password » Certificate Store

11: Abrimos la consola de administración de IIS
Default Web Site » Properties
12: Seleccionamos las propiedades del dominio en cuestión
Properties » Directory Security » Server Certificate..
13: En nuestro caso, vamos a reemplazar o renovar un certificado
Replace the current certificate » Available Certificate » (select new certificate)


14: Seleccionamos el certificado que importamos mediante el Snap-In y reiniciamos el dominio manejado
IIS Console » stop & IIS Console » start
15: El último paso, verificar la información!
En las propiedades del navegador, podrán obtener la información del sitio
Se que posiblemente me hubiera ahorrado algunos pasos si hubiéramos generado el CSR desde la consola de IIS, pero no fue así el caso.. pero me alegra, pude poner en práctica más opciones del OpenSSL que por cierto resulta ser una navaja suiza en todo estos menesteres, practiquemos pues!