Algunos gestores de contenidos, como en este caso Dotnetnuke, tienen reglas propias de redirección que pueden interferir a la hora de instalar certificados gratuitos de Let’s Encrypt desde panel de control Plesk. Existen varias opciones, pero una de la más sencilla para este problema concreto es cambiar el tratamiento de las redirecciones del CMS:
<friendlyUrl defaultProvider="DNNFriendlyUrl"> <providers> <clear /> <add name="DNNFriendlyUrl" type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider, DotNetNuke.HttpModules" includePageName="true" regexMatch="[^a-zA-Z0-9 _-]" urlFormat="humanfriendly" /> </providers> </friendlyUrl>
Sustituyendo «advanced» por «humandfriendly«, lo que dejará el sitio añadiendo la extensión .aspx de nuevo generando el directorio «\.well-known\acme-challenge\» que incluye la descarga del ficheros sin extensión como texto plano en su propio web.config
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <staticContent> <clear /> <mimeMap fileExtension="." mimeType="text/plain" /> </staticContent> <handlers> <clear /> <add name="StaticFile" path="*" verb="GET" modules="StaticFileModule" resourceType="Either" /> </handlers> </system.webServer> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </configuration>
Ahora podemos volver a dejar la redirección como «advanced». Si, la otra opción es añadir el fichero anterior en el directorio indicado, Let’s Encrypt creará una petición de comprobación del tipo:
http://midominio.es/.well-known/acme-challenge/8-TsVgjMp5v3BRkUVk4zwdiCVDlSkDaf…b
A partir de versiones más modernas, podemos añadir una configuración específica de URLs amigables desde la configuración Host en Sistemas > Configuración del sisstema > Configuración Avanzada > Configuración de URLs amigables
Añadimos las reglas de redirección de IIS para no afectar al directorio:
<configuration> <system.webServer> <rewrite> <rules> <clear /> <rule name="LetsEncrypt" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{REQUEST_URI}" pattern=".well-known/" /> </conditions> <action type="Rewrite" url="{REQUEST_URI}" /> </rule> </rewrite> </system.webServer> </configuration>
Si pese a ello sigue sin poder acceder a la ruta, puedes deshabilitar temporalmente desde Plesk, el soporte para .NET y renovar manualmente.