2017-04-14 4 views
4

Ich versuche, letsencrypt Zertifikat mit Certify zu installieren, aber ich bekomme Fehler, der (glaube ich) nichts mit Certify zu tun hat . Problem ist, wie meine web.config für die Behandlung meiner Asp.Net Core - Angular2 Anwendung konfiguriert ist.Set web.config für Letsencrypt - Zertifizieren mit Asp.NET Core und Angular 2 (Javascript-Dienste)

Ich habe nicht konfiguriert web.config, Javascript services tat. Auf Certify Webseite am unteren Rand der Seite über mein Problem schreibt:

erhalte ich die Fehlermeldung „Automatisierte Kontrollen für erweiterungs Inhalt fehlgeschlagen ..“ Dies bedeutet, dass Ihre Web-Server-Konfiguration keine Dateien ohne Erweiterung ermöglicht wird an Besucher der Website serviert werden. Leider ist dies eine Anforderung des Lets Encrypt Service, damit er die Verifizierungsdatei, die automatisch auf Ihrer Website erstellt wird, wenn Sie ein Zertifikat anfordern (mehr Infos).

Um diese Anforderung zu erfüllen, versuchen wir diese automatisch für Sie zu konfigurieren. Wenn Sie in {Ihre Site} .well-known \ acme-challenge suchen, sehen Sie wir haben eine web.config und eine Datei namens configcheck erstellt. Wenn Sie nicht zu dieser Konfigurationsdatei in Ihrem Webbrowser (http: // {Ihre Site} /. Bekannte/acme-challenge/configcheck durchsuchen können, dann kann der Lets Encrypt Service nicht auf die Dateien zugreifen, die er benötigt Sie können bearbeiten Sie die Datei web.config in diesem Ordner, um Erweiterungsdateien arbeiten zu bekommen, dann können Sie Ihr Zertifikat erneut anfordern. Ein MimeMap-Eintrag für Entweder "." oder ". *" funktioniert in der Regel abhängig von Ihrem Betrieb System Version.

Kann einige Experten helfen Sie mir bitte meine web.config-Datei zu korrigieren, was auch immer letsencrypt Bedürfnisse unterstützen. Derzeit jeder ding in .well-known/acme-challenge ist nicht über WebBrowser zugänglich.

Meine web.config:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/> 
    </handlers> 
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/> 
    <rewrite> 
     <rules> 
     <rule name="redirect" stopProcessing="true"> 
      <match url="^$" /> 
      <action type="Rewrite" url="/index.html" /> 
     </rule> 
     <rule name="Angular 2 pushState routing" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions logicalGrouping="MatchAll"> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
      <add input="{REQUEST_FILENAME}" pattern=".*\.[\d\w]+$" negate="true" /> 
      <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" /> 
      <add input="{REQUEST_URI}" pattern="^/(.well-known)" negate="true"/> 
      <add input="{REQUEST_URI}" pattern="^/(signin)" negate="true" /> 
      </conditions> 
      <action type="Rewrite" url="/index.html" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

Danke.
Screenshot of error

+0

'ist nicht über WebBrowser zugänglich 'ist das wie ein 403? oder 404? –

Antwort

1

Setzen Sie dieses in der .\.well-known\acme-challenge\Web.Config Datei Gleich neben dem Verschlüsseln von DNS-Kontrolldatei (en) Lets. Keine Notwendigkeit, die Web.Config zu ändern, die Sie bereits haben. Alles, was es tut es sagen IIS Dateien ohne Erweiterung in dem Verzeichnis husten, wo diese Web.Config mit Mime-Typ text/plain liegt, wie Lets Encrypt das erwartet.

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <staticContent> 
      <mimeMap fileExtension="." mimeType="text/plain" /> 
     </staticContent> 
     <handlers> 
      <clear /> 
      <add name="StaticFile" path="*" verb="GET" modules="StaticFileModule" resourceType="Either" /> 
     </handlers> 
    </system.webServer> 
</configuration> 
0

Ich hatte das gleiche Problem. In meinem Fall musste ich diesen Code auch zu meinem Startup.cs hinzufügen.

Stellen Sie außerdem sicher, dass Sie das .well-known-Verzeichnis hinzufügen. Es ist ein versteckter Ordner - verwende also den Namen ".well-known". (Der nachgestellte Punkt wird verschwinden). Windows wird keinen neuen versteckten Ordner ohne den Anfang und den nachfolgenden Punkt zulassen.

using Microsoft.Extensions.FileProviders; 
using System.IO; 
using Microsoft.AspNetCore.Http; 
public class Startup 
{ 
    public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 
     app.UseStaticFiles(); 
     app.UseStaticFiles(new StaticFileOptions 
     { 
      FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @".well-known")), 
      RequestPath = new PathString("/.well-known"), 
      ServeUnknownFileTypes = true // serve extensionless files 
     }); 
    } 
} 
0

Das Problem, das ich mit der Standard-web.config in der Acme-Challenge-Ordner lief, war, dass der Applicationhost.Config enthielt:

<section name="handlers" overrideModeDefault="Deny" /> 

Der Handler Abschnitt in der Acme-Herausforderung web.config daher mit dem Ergebnis nicht erlaubt wurde, dass die Herausforderung gescheitert. In diesem Fall waren die Lösungen: ändern applicationhost.config Linie:

<section name="handlers" overrideModeDefault="Allow" /> 

Oder ... die Handler entfernen aus der web.config in Acme-challenge-Ordner festlegen.

Verwandte Themen