Hay veces en las que no es suficiente con desplegar un único certificado en Azure, puesto que el certificado depende de certificados intermedios. Estos certificados intermedios no están presentes en Azure por defecto y son necesarios para validar la identidad del certificado que queremos usar con nuestro Role. Habitualmente, los certificados asociados a Roles de Azure se utilizan para poder utilizar el protocolo HTTPS en aplicaciones web.
Recordamos que para desplegar en Azure un certificado, hay que conectarse al portal de gestión de Azure, seleccionar el Cloud Service apropiado, seleccionar la pestaña de Certificados y en esta página web de gestión de certificados, subir el fichero (*.pfx) del certificado que queremos instalar.
Para poder instalar los certificados intermedios, lo que haremos será crear una startup task que realice la instalación previa a la inicialización del role. Para ello, en el fichero de configuración del proyecto Cloud «ServiceDefinition.csdef» añadimos en el role las siguientes lineas:
<Startup>
<Task commandLine=»startup.cmd» executionContext=»elevated» />
</Startup>
Añadimos al proyecto Cloud los ficheros de los certificados intermedios (en este ejemplo: SS_PrimaryCA.pem y SSL_SecondaryCA.pem) y el de comandos (en el ejemplo: startup.cmd). Estos ficheros han de tener la propiedades: Build Action = None y Copy To Output Directory = Copy always. De esta forma, Visual Studio al compilar el código del proyecto, moverá los tres ficheros a la carpeta donde se guardan los assemblies resultado de la compilación.
Por último, en el fichero de comandos startup.cmd, añadimos un para de comandos, uno por cada certificado intermedio que queremos instalar. Estos comandos invocan la utilidad de Windows certutil que permite la gestión de certificados vía línea de comandos. Como argumentos de certutil, indicamos el fichero del certificado que queremos instalar, e indicamos que queremos instalarlo en el contenedor de Certificados Intermedios al pasarle el argumento «CA». Ejemplo:
Certutil -addstore «CA» SSL_PrimaryCA.pem
Certutil -addstore «CA» SSL_SecondaryCA.pem