Microsoft Lync Server
Header

​Una de la cosas que debemos  tener en cuenta son las renovaciones de los certificados de nuestros servidores de Lync, pero muchas veces nos enteramos de que tenemos que renovarlos el mismo día que el cliente nos alerta de que no se pueden conectar los usuarios. En ese momento nos conectamos a los servidores para tratar de analizar cual es el problema y … nos encontramos con el siguiente ID de Evento: 19022

 Certificados_Lync_Renovar_DigiCert_63.png
Este evento se genera en el propio servidor en donde tenemos instalado Lync Server, y nos alerta de que en X días los certificados expirarán. Esto representa un gran problema sino estamos alertados con anterioridad de esta circunstancia, puesto en caso de no renovarlos antes de su expiración, los servicios de nuestros servidores no se iniciarían. La renovación de los certificados suele ser más o menos rápida, depende del proveedor que tengáis. También es cierto que todos los proveedores de certificados nos avisan entre 30 y 60 días antes de que expira el certificado, pero siempre lo harán al contacto que hemos habilitado en el momento de la compra del mismo. Si es vuestro cliente quien recibe la alerta y no os avisa, pues seguro que es muy probable que os encontréis con la situación en la que los certificados hayan expirado.
 
Desde luego esto tiene fácil solución, el problema es que al no haberlo previsto ahora los usuarios no se podrán conectar y ahí tenemos el verdadero problema. Si bien es cierto que los servidores deberían estar monitorizados vía SCOM o herramientas similares, pero claro está que no todos los clientes tienen este tipo de soluciones de monitorización. Yo quiero mostraros una solución casera y sin coste que seguro que os vendrá bien. Como el servidor nos alerta cada vez que queden menos de 10 días para expirar los certificados, vamos a ver como podemos crear un sistema de alerta sencillo y que nos avise por e-mail de que los certificados de uno de los servidores está a punto de expirar.
 
Yo utilizaré varias herramientas, por un lado una herramienta gratuita para enviar e-mails desde la línea de comandos como es SendEmail, esto nos permitirá alertanos vía e-mail con la información del evento. Lo que haré será crear una tarea programa de Windows que se ejecute cuando se produzca el evento 19022, y con PowerShell crearé un fichero de texto con la información del evento 19022. Ahora os detallo paso a paso como he configurado esta alerta, lo primero que he hecho es descargarme el SendEmail y crear una carpeta en C: con el nombre Send_Mail y en donde voy a colocar el SendMail y los dos scripts que voy a crear.
 
Lo primero es crear una script de PowerShell que nos permita identificar el evento 19022 y extraer sus descripición a un fichero de texto para posteriormente enviarlo por correo. Tenemos un cmdlet para analizar vía CLI los eventos del sistema: Get-WinEvent.
 
Este script lo que hace es buscar todos los eventos con el ID 19022 (id=19022) dentro de los registros de Lync Server (logname="Lync Server") creados en el mismo dia (StartTime=(Get-Date).date}) y luego enviará el resultado obtenido a un fichero de texto con el nombre CerExp.txt (lo creará automáticamente al ejecutarse el script) (>C:\Send_Email\CerExp.txt). Este script de PowerShell lo he guardado en la misma carpeta que tengo el SendMail y con el nombre Event_19022.ps1
Certificados_Lync_Renovar_DigiCert_61.png
Si lo ejecutamos el resultado sería el siguiente (he modificado el script para que mostrase el resultado que quiero, porque es un evento anterior a este artículo)
Certificados_Lync_Renovar_DigiCert_62.png
Ahora debemos configurar un proceso bat o cmd para ejecutar el sendmail, y enviar el fichero CerExp.txt como adjunto. Si ejecutamos el SendMail podemos ver la sintaxis del comando
 
Synopsis:  sendEmail.exe -f ADDRESS [options]
  Required:
    -f ADDRESS                from (sender) email address
    * At least one recipient required via -t, -cc, or -bcc
    * Message body required via -m, STDIN, or -o message-file=FILE
  Common:
    -t ADDRESS [ADDR …]     to email address(es)
    -u SUBJECT                message subject
    -m MESSAGE                message body
    -s SERVER[:PORT]          smtp mail relay, default is localhost:25
  Optional:
    -a   FILE [FILE …]      file attachment(s)
    -cc  ADDRESS [ADDR …]   cc  email address(es)
    -bcc ADDRESS [ADDR …]   bcc email address(es)
    -xu  USERNAME             username for SMTP authentication
    -xp  PASSWORD             password for SMTP authentication
  Paranormal:
    -b BINDADDR[:PORT]        local host bind address
    -l LOGFILE                log to the specified file
    -v                        verbosity, use multiple times for greater effect
    -q                        be quiet (i.e. no STDOUT output)
    -o NAME=VALUE             advanced options, for details try: –help misc
        -o message-content-type=<auto|text|html>
        -o message-file=FILE         -o message-format=raw
        -o message-header=HEADER     -o message-charset=CHARSET
        -o reply-to=ADDRESS          -o timeout=SECONDS
        -o username=USERNAME         -o password=PASSWORD
        -o tls=<auto|yes|no>         -o fqdn=FQDN
 
  Help:
    –help                    the helpful overview you're reading now
    –help addressing         explain addressing and related options
    –help message            explain message body input and related options
    –help networking         explain -s, -b, etc
    –help output             explain logging and other output options
    –help misc               explain -o options, TLS, SMTP auth, and more
Yo lo único que he hecho es enviar el correo y especificar la dirección de origen, destino, servidor, asunto, cuerpo del mensaje y fichero adjunto:
 
Dirección de Origen: soporte@asirsl.com
Direeción de Destino: sbuitrago@asirsl.com
Asunto: Certificados a punto de expirar en el servidor EDGE de ASIR
Cuerpo: Los certificados configurados para el servicio de autenticacion de audio y video de LS están a punto de expirar, se adjunta un fichero la informacion del evento
Adjunto: CerExp.txt 
 
sendEmail.exe -f soporte@asirsl.com -s smtp.asirsl.com:25 -t sbuitrago@asirsl.com -u "Certificados a punto de expirar en el servidor EDGE de ASIR" -m "Los certificados configurados para el servicio de autenticacion de audio y video de LS estan a punto de expirar, se adjunta un fichero la informacion del evento" -a CerExp.txt
 
Ahora lo único que debemos hacer es abrir un fichero de texto y copiar el siguiente código:
 
PowerShell -command .\Event_19022.ps1
sendEmail.exe -f soporte@asirsl.com -s smtp.asirsl.com:25 -t sbuitrago@asirsl.com -u "Certificados a punto de expirar en el servidor EDGE de ASIR" -m "Los certificados configurados para el servicio de autenticacion de audio y video de LS están a punto de expirar, se adjunta un fichero la informacion del evento" -a CerExp.txt
 
Guardamos el fichero como .BAT o .CMD con el nombre Send_Email_Certificados (o el nombre que queráis no es relevante) dentro de la carpeta Send_Email. Como todos los ficheros están la misma ubicación (c:\Send_Mail\) en el script no le indico ninguna ruta para lanzar el sendEmail.exe o Event_19022.ps1, en caso contrario debéis modificarlo según vuestra ínstalación. Como podéis observar en la raíz de la carpeta Send_Mail  se encuentran todos los ficheros que necesitamos: sendEmail.exe, Event_19022.ps1 y Send_Mail_Certificados.bat
Certificados_Lync_Renovar_DigiCert_60.png
Lo normal es que antes de ponerlo en producción probemos que funciona correctamente, para ello ejecutamos el Send_Email_Certificados y debería realizar las siguientes tareas:
  1. Crear o actualizar el fichero CerExp.txt con la descripción del evento 19022
  2. Enviar un e-mail a la cuenta de destino sbuitrago@asirsl.com (el e-mail que le he indicado) con el fichero adjunto
 Esperamos unos segundos y si todo ha funcionado correctamente debemos tener en nuestra bandeja de entrada el correo con el adjunto deseado
Renovar_Certificado_Lync_DigiCert_22.png
Renovar_Certificado_Lync_DigiCert_23.png

Ahora por último debemos crear una tarea programada para que ejecute el script Send_Mail_Certificados.bat. Abrimos el Programador de Tareas y creamos una tarea nueva

 
Certificados_Lync_Renovar_DigiCert_40.png
Escribimos el nombre de la tarea que vamos a crear
Certificados_Lync_Renovar_DigiCert_41.png
 
nos vamos a la pestaña desencadenadores para especificar cuando queremos que se ejecute esta tarea
Certificados_Lync_Renovar_DigiCert_42.png
como os había comentado antes, nos interesa que se ejecute cuando se registre el evento 19022, para ello elegimos las siguientes opciones y pulsamos en aceptar
Certificados_Lync_Renovar_DigiCert_43.png
 
Certificados_Lync_Renovar_DigiCert_44.png
 
ahora vamos a la pestaña acciones para indicarle que debe ejecutarse el script Send_Mail_Certificados.bat, para ello pulsamos en Nueva
Certificados_Lync_Renovar_DigiCert_45.png
Buscamos el script dentro de  C:\Send_Mail y pulsamos en Aceptar
Certificados_Lync_Renovar_DigiCert_51.png
Certificados_Lync_Renovar_DigiCert_52.png
Configuramos que se ejecute la tarea tanto si está iniciada la sesión por parte del usuario que especifiquemos a continuación para que ejecute la tarea y pulsamos en Aceptar
Certificados_Lync_Renovar_DigiCert_47.png
 
Ahora nos solicita el usuario y contraseña con el cual queremos ejecutar dicha tarea, introducimos el usuario deseado y pulsamos en Aceptar
Certificados_Lync_Renovar_DigiCert_49.png
Ahora tenemos nuestro sistema de alertas, es bastante rudimentario pero sino contamos con presupuesto para adquirir ciertas herramientas profesionales seguro que será de gran ayuda. Ahora cada vez que el sistema registre el evento 19022 nos enviará un correo, y podremos enterarnos de que el certificado está a punto de caducar. Como os comentaba anteriormente de estas cosas ya se encarga el proveedor si es un certificado público, de lo contrario debéis tener anotado la fecha de expiración del certificado o bien utilizar algo similar a esto para que no se os olvide!!
 
Y ahora que tenemos la alerta creada, quedaría el segundo paso que sería renovar el certificado. En mi caso utilizo certificados de DigiCert, por lo que 60 días antes ya me están alertando de que tengo que renovarlo. Lo que tenemos que hacer es acceder a la Web de DigiCert y solicitar la renovación del certificado
Certificados_Lync_Renovar_DigiCert_1.png
 
Elegimos los años de validez del certificado, en mi caso en elegido 1 año. Por lo que al año siguiente debo realizar el mismo proceso que ahora os estoy describiendo. Además podemos especificar los nombres del certificado, en mi caso he cambiado uno nombre edgeocs.asirsl.com por edge.asirs.com (esto me obligará a crear de nuevo el CSR: Creación de CSR para Lync de forma sencilla)
Certificados_Lync_Renovar_DigiCert_2.png
 
Cubrimos los datos de contacto y le indicamos que los datos técnicos son los mismos que los datos de contacto, así evitamos tenemos que escribirlos de nuevo y pulsamos en Continue
Certificados_Lync_Renovar_DigiCert_3.png
 
Elegimos la forma de pago
Certificados_Lync_Renovar_DigiCert_4.png
 
ya tenemos nuestra orden de renovación en proceso, si tenemos que enviarleyo
Certificados_Lync_Renovar_DigiCert_5.png
Como os había comentado anteriormente he cambiado uno de los nombres del certificado, así que tengo que volver a crear el CSR (Creación de CSR para Lync de forma sencilla), y como tal DigiCert nos informa de ello (sino es imposible completar la solicitud de renovación)
Certificados_Lync_Renovar_DigiCert_80.png
Para hacerlo de forma rápida voy a utilizar la utilidad que DigiCert tiene a disposición de los clientes: Digicert Certificate Utility. Nos muestra los certificados del equipo y podemos pulsar directamente en Create CSR
Certificados_Lync_Renovar_DigiCert_6.png
 
Como tenía seleccionado uno de los certificados (además el que se corresponde con el certifidado que quiero renovar, pero podría ser cualquier otro) me indica si quiero importar los atributos de este certificado para la nueva solicitu y le indico que si.
Certificados_Lync_Renovar_DigiCert_7.png
 
De esta forma me cubrirá ya los datos en la nueva solicitud, y como os fijáis aun tengo el nombre edgeocs.asirsl.com
Certificados_Lync_Renovar_DigiCert_8.png
por lo que lo cambio por edge.asirsl.com y pulsamos en generate
Certificados_Lync_Renovar_DigiCert_9.png
ahora podemos pulsar en copiar o guardar el fichero, en función de si lo vamos a enviar ahora o más tarde debemos elegir una u otra opción
Certificados_Lync_Renovar_DigiCert_10.png
Yo lo voy a guardar para posteriormente continuar con la solicitud de renovación del certificado
Certificados_Lync_Renovar_DigiCert_12.png
 
Ahora abrimos de nuevo la solicitud del certificado en DigiCert y pulsamos en Submit CSR que es lo que tenemos pendiente por enviar al proveedor
Certificados_Lync_Renovar_DigiCert_13.png
 
seleccionamos el software de servidor en donde vamos a instalar el certificado y ahora pulsa mos en Upload a CSR (también podemos pegar el CSR si en la solicitud hubieramos pulsado en Copiar)
Certificados_Lync_Renovar_DigiCert_14.png
 
ahora pulsamos en Continue
Certificados_Lync_Renovar_DigiCert_15.png
y nos muestra el resumen de la solicitud, ahora toca esperar unos minutos hasta que se complete por parte de DigiCert.
Certificados_Lync_Renovar_DigiCert_16.png
Este proceso suele llevar entre 15 y 30 min, la verdad es que son muy rápidos y esto siempre es de agradecer. Si ahora nos vamos  la página principal de nuestro panel podemos comprobar el estado de la solicitud
Certificados_Lync_Renovar_DigiCert_17.png
Una vez que se haya completadola solicitud del certificado debemos descargárnoslo
Certificados_Lync_Renovar_DigiCert_18.png
 
pulsamos en Download
Certificados_Lync_Renovar_DigiCert_19.png

Elegimos el tipo de certificado a descargar

Certificados_Lync_Renovar_DigiCert_20.png
ahora nos queda importalo, para ello volvemos a iniciar la utilidad de DigiCert y pulsamos en Import y seleccionamos el certicado que nos hemos descargado
Certificados_Lync_Renovar_DigiCert_22.png

Escribimos un nombre descriptivo para posteriormente reconocerlo a la hora de importarlo y pulsamos en Finalizar

Certificados_Lync_Renovar_DigiCert_23.png
Ahora ya tenemos nuestro certifidado renovado e importado en nuestro servidor de Lync (en mi caso en el EDGE)
Certificados_Lync_Renovar_DigiCert_24.png
Certificados_Lync_Renovar_DigiCert_25.png
Por último para completar todo el proceso únicamente nos queda asignarlo al EDGE, para ello ejecutamos el asistente de implementación de Lync y pulsamos en Instalar o actualizar el sistema Lync Server
 
Certificados_Lync_Renovar_DigiCert_26.png
 
Solicitar, instalar  o asignar certificados
Certificados_Lync_Renovar_DigiCert_27.png
Seleccionamos los certificados de servidor perimetral y pulsamos en Asignar
Certificados_Lync_Renovar_DigiCert_28.png
 
No muestra la siguiente advertencia y pulsamos en
Certificados_Lync_Renovar_DigiCert_29.png
pulsamos en siguiente
Certificados_Lync_Renovar_DigiCert_30.png
 
seleccionamos el certificado a importar y pulsamos en siguiente (yo me he colado y no he puesto el nombre descriptivo, pero por la fecha lo reconozco)

Certificados_Lync_Renovar_DigiCert_31.png
pulsamos en Siguiente
Certificados_Lync_Renovar_DigiCert_32.png
Una vez que haya finalizado la asignación del certificado nos volverá a la pantalla de Asistente para certifiados y podemos ver que ya lo tenemos asignado
Certificados_Lync_Renovar_DigiCert_34.png
 
Por último y muy importante sobre todo tratándose de un servidor perimetral debemos reiniciar los servicios de Lync para que actualice la asignación del nuevo certifidado sobre los distintos servicios del EDGE. Para automatizar este proceso podemos ejecutar los siguientes cmdlets: Start-CsWindowsService y Stop-CsWindowsService
Certificados_Lync_Renovar_DigiCert_35.png
 
Por último vamos a revisar el visor de eventos y verificar que todo ha iniciado sin problemas
Certificados_Lync_Renovar_DigiCert_36.png
Para verificar que todo funciona correctamente podéis iniciar sesión en Lync desde fuera de la organización y ver si os inicia sin problemas, y si tenéis alguna federación con otras compañías o sistemas de IM públicos verificad que todo está correcto.
 
Aqui os dejo como adjunto mi humilde script y demás ficheros por si los necesitáis Send_Email_Scripts.zipSend_Email_Scripts.zip
 
En mi caso el cambio de uno de los nombres del certificado no implica cambio alguno en la topología, puesto que lo utilizo para otros servicios fuera del AV, Webconf y Acceso. En el caso de que hubiese sido alguno de estos tres servicios si tendría que modificar la topología y volver a publicarla para que se replicase al EDGE.
 
Espero que os sea de utilidad!!!