source

wordpress 또는 asp.net mvc에서 acme-module을 암호화합니다.

manysource 2023. 3. 1. 11:20

wordpress 또는 asp.net mvc에서 acme-module을 암호화합니다.

Let's Encrypt를 사용하여 회사의 보안 인증서를 생성하려고 시도했지만 실패했습니다.저희 회사는 WordPress 3.9.7을 메인 웹사이트로 사용하고 있는데, WordPress 3.9.7은 서드파티 회사에서 취급하고 있기 때문에 새로운 버전으로 업그레이드할 수 없습니다.이 웹 사이트는 Windows Server 2008 R2의 Internet Information Services 7.5 위에서 실행됩니다.질문입니다.워드프레스 핸들 http://www.company.com/.well-known/acme-challenge/mftvrU2brecAXB76BsLEQW_SL_srdG3oqTZR5KHEA ?암호화에서 예상한 그대로를 반환하는 빈 페이지와 새 템플릿을 이미 작성했습니다.루트 선두에 점(.)이 있는 것이 문제인 것 같습니다만, 워드프레스에서는 어떻게 풀어야 할지 모르겠습니다.

또, asp.net의 MVC Web 사이트를 사용하고, IIS가 그 Web 사이트를 잠시 가리키게 할 수도 있습니다.고객들이 저희 웹사이트에 몇 분간 접속할 수 없을 수도 있기 때문에 좋은 생각은 아니지만 그래도 괜찮습니다.그렇다면 질문은 다음과 같습니다.이름의 선두에 점("")이 있는 컨트롤러 또는 루트를 작성하려면 어떻게 해야 합니까?도와주시면 정말 감사하겠습니다.

ASP의 경우.Net MVC 또는 Web Forms에서는 특정 라우팅 설정을 사용하면 이 URL을 스태틱파일 반환이 아니라 라우팅 엔진이 MVC/폼핸들러에 건네주는 것으로 취급합니다.결과는 404 또는 503이 됩니다.솔루션은 놀라울 정도로 간단합니다.

아직 작성하지 않은 경우 Challenge 파일을 저장합니다.

  1. 필요한 dir를 만듭니다..well-known마이크로소프트가 게으르기 때문에 까다롭지만 cmdline에서 하거나 폴더를 만들 수 있습니다..well-known.Windows 탐색기에서 회피책을 확인하고 후행 기간을 삭제합니다.
  2. 안에서.\.well-known\acme-challenge챌린지 파일을 적절한 이름과 내용과 함께 배치합니다.당신은 이 부분을 당신이 원하는 대로 할 수 있습니다; 나는 우연히 Git Bash를 다음과 같이 사용합니다.echo "oo0acontents" > abcdefilename

그리고 웹을 만듭니다.다음 내용을 포함하는 acme-challenge dir 컨피규레이션파일

<?xml version = "1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <clear />
            <mimeMap fileExtension = ".*" mimeType="text/json" />
        </staticContent>

        <handlers>
            <clear />
            <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule" 
            resourceType="Either" requireAccess="Read" />  
        </handlers>
    </system.webServer>
</configuration>

출처 : https://github.com/Lone-Coder/letsencrypt-win-simple/issues/37

완료. 404/503 대신 파일이 반환되기 시작합니다. 이제 제출하여 도메인을 검증할 수 있습니다.

기타: 위의 코드 스니펫은 content-type을 letencrypt와 관련이 없는 과거 요건인 json으로 설정합니다.현재 요건은 필요 없습니다.팬츠리스/코끼리 콘텐츠 타입을 보내도 문제 없습니다.

ASP에 대한 상세 정보그물

모든 HTTP 요청을 HTTPS로 리다이렉트하여 사용자가 요청하지 않아도 안전한 연결을 유지할 수 있도록 합니다.LetsEncrypt를 사용하기 전까지는 .well-known에 대한 요청을 무시하기 때문에 많은 쉬운 방법이 있습니다.클래스에서 다음과 같이 스태틱메서드를 설정할 수 있습니다.

public static class HttpsHelper
{
    public static bool AppLevelUseHttps =
#if DEBUG
        false;
#else
        true;
#endif

    public static bool Application_BeginRequest(HttpRequest Request, HttpResponse Response)
    {
        if (!AppLevelUseHttps)
            return false;

        switch (Request.Url.Scheme)
        {
            case "https":
                return false;

#if !DEBUG
            case "http":
                var reqUrl = Request.Url;
                var pathAndQuery = reqUrl.PathAndQuery;
                // Let's Encrypt exception
                if (pathAndQuery.StartsWith("/.well-known"))
                    return false;
                // http://stackoverflow.com/a/21226409/176877
                var url = "https://" + reqUrl.Host + pathAndQuery;

                Response.Redirect(url, true);
                return true;
#endif
        }

        return false;
    }
}

이것으로, Lets Encrypt 가 노킹 하는 경우를 제외하고, HTTPS 로 리다이렉트 할 수 있습니다.Global.asax.cs에서 연결:

    protected void Application_BeginRequest(object sender, EventArgs ev)
    {
        HttpsHelper.Application_BeginRequest(Request, Response);
    }

반품된 Bool은 여기서 폐기됩니다.요청/응답의 즉시 종료 여부를 결정하고 싶을 때 사용할 수 있습니다. 진정한 의미, 종료.

마지막으로 필요에 따라 AppLevelUseHttps 변수를 사용하여 필요한 경우 이 동작을 끌 수 있습니다.예를 들어 HTTPS 없이 동작하는지 테스트합니다.예를 들어 웹 값으로 설정할 수 있습니다.설정 변수

언급URL : https://stackoverflow.com/questions/34770904/letsencrypt-acme-challenge-on-wordpress-or-asp-net-mvc