FTP 7.5: Autenticación con certificados digitales
Ya os comenté en otro post como solventar un error al acceder con FTPS https://blogs.msdn.com/b/desarrolloweb/archive/2012/04/27/ftps-75-the-parameter-is-incorrect.aspx
Ahora es el momento de comentar cómo funciona la autenticación con certificados de cliente en el FTP 7.5. El IIS utiliza el certificado de cliente para utilizar la autenticación integrada de Windows si el certificado está mapeado con los usuarios de dominio.
No se puede activar la autenticación del certificado mediante el interfaz gráfico de la gestión del IIS, para ello tendremos que emplear unos comandos que deshabiliten la autenticación básica y la anónima y habiliten la autenticación de certificados
de cliente:
appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.security.authentication.anonymousAuthentication.enabled:"False" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.security.authentication.basicAuthentication.enabled:"False" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.security.authentication.clientCertAuthentication.enabled:"True" /commit:apphost
Después si podremos utilizar el interfaz gráfico para ajustar la configuración SSL del sitio FTP en el que podremos elegir el certificado SSL y si requerimos o no el cifrado SSL.
Después de haber hecho este cambio deberíamos tener una configuración de este estilo:
<site name="ftp.example.com" id="5">
<application path="/">
<virtualDirectory path="/" physicalPath="c:\inetpub\www.example.com" />
</application>
<bindings>
<binding protocol="ftp" bindingInformation="*:21:" />
</bindings>
<ftpServer serverAutoStart="true">
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<clientCertAuthentication enabled="true" />
</authentication>
<ssl serverCertHash="57686f6120447564652c2049495320526f636b73" controlChannelPolicy="SslRequire" dataChannelPolicy="SslRequire" />
<sslClientCertificates clientCertificatePolicy="CertRequire" useActiveDirectoryMapping="true" validationFlags="NoRevocationCheck" />
</security>
</ftpServer>
</site>
Aunque permite el acceso a un FTP que no tenga usuarios de dominio, lo que no permite es el mapeo de certificados personales con usuarios locales. Lo único que permitiría es que el cliente debe tener un certificado personal válido para poder acceder, pero tendrá que autenticarse al entrar ya sea con la autenticación anónima o la básica.
Espero que os sirva de ayuda.
- José Ortega Gutiérrez