Computer >> 컴퓨터 >  >> 체계 >> Windows Server

IIS 웹 서버/RDS에 무료 Let's Encrypt TLS/SSL 인증서 설치

이 가이드에서는 Windows Server 2019/2016/2012 R2에서 실행되는 IIS 웹 서버의 사이트에 대한 무료 TLS/SSL Let's Encrypt 인증서를 설치하고 바인딩하는 방법을 보여줍니다.

내용:

  • Let's Encrypt 및 Windows용 ACME 클라이언트
  • WACS Clint, Windows Server의 IIS에 Let's Encrypt TLS 인증서 설치
  • IIS URL 재작성을 사용하여 HTTP에서 HTTPS로 리디렉션
  • RDS 게이트웨이 및 웹 액세스와 함께 Let's Encrypt 인증서 사용

Let's Encrypt 및 Windows용 ACME 클라이언트

웹사이트의 TLS/SSL 인증서를 사용하면 가로채기(MITM)로부터 공용 네트워크를 통해 전송되는 사용자 데이터를 보호할 수 있습니다. ) 공격하고 데이터 무결성을 제공합니다. 비영리 인증 센터 Let's Encrypt API를 사용하여 HTTPS 암호화를 위한 무료 X.509 암호화 TLS 인증서를 자동으로 발급할 수 있습니다. 90일 후에 만료되는 도메인 유효성 검사용 인증서만 발급됩니다(주당 하나의 도메인에 대해 50개의 인증서로 제한됨). 그러나 간단한 일정을 사용하여 웹사이트의 SSL 인증서를 자동으로 갱신할 수 있습니다.

인증서를 자동으로 발급하는 Let's Encrypt API 인터페이스를 자동 인증서 관리 환경 이라고 합니다. (ACME ) API. Windows 시스템용으로 가장 많이 사용되는 3가지 ACME API 클라이언트 구현이 있습니다.

  1. Windows ACME Simple(WACS) SSL 인증서를 대화형으로 발급하고 IIS 웹 서버의 특정 사이트에 바인딩하기 위한 명령 프롬프트 도구입니다.
  2. Powershell ACMESharp 모듈 – ACME API를 통해 Let's Encrypt 서버와 상호 작용하는 여러 cmdlet이 있는 PowerShell 라이브러리입니다.
  3. 인증 ACME API를 사용하여 SSL 인증서를 대화식으로 관리하는 Windows 그래픽 도구입니다.

WACS Clint, Windows Server의 IIS에 Let's Encrypt TLS 인증서 설치

Let's Encrypt에서 SSL 인증서를 얻는 가장 쉬운 방법은 콘솔 도구 Windows ACME Simple을 사용하는 것입니다. (WACS ) (이전에는 이 프로젝트가 LetsEncrypt-Win-Simple이라고 불렸습니다. ). IIS에서 실행되는 웹사이트 중 하나를 선택하고 SSL 인증서를 자동으로 발급 및 바인딩할 수 있는 간단한 마법사입니다.

Windows Server 2016에서 실행되는 IIS 웹 사이트가 있다고 가정합니다. Let's Encrypt에서 무료 SSL 인증서를 설치하여 웹 사이트를 HTTPS 모드로 전환하는 작업이 수행됩니다.

GitHub https://github.com/PKISharp/win-acme/releases에서 WACS 클라이언트의 최신 릴리스를 다운로드합니다(내 경우에는 버전 v2.0.10 – 파일 이름은 win-acme.v2). .0.10.444.zip ).

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

IIS가 설치된 서버의 다음 디렉터리에 zip 아카이브의 압축을 풉니다. c:\inetpub\letsencrypt

Win-Acme를 사용하려면 .NET Framework 4.7.2 이상을 설치해야 합니다(설치된 .NET Framework 버전은 어떻게 확인합니까?).

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

관리자 권한 명령 프롬프트를 열고 c:\inetpub\letsencrypt 디렉터리로 이동하여 wacs.exe를 실행합니다. . 그러면 대화형 Let's Encrypt 인증서 생성 및 IIS 사이트 바인딩 마법사가 시작됩니다. 새 인증서를 빠르게 만들려면 N:을 선택합니다. – 새 인증서 만들기(IIS의 경우 단순) .

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

다음으로 인증서 유형을 선택해야 합니다. 이 예에서는 별칭(다중 SAN – 주체 대체 이름)이 있는 인증서를 사용할 필요가 없으므로 항목 1을 선택하기만 하면 됩니다. IIS 사이트의 단일 바인딩 . 와일드카드 인증서가 필요한 경우 3 옵션을 선택하세요. .

그런 다음 유틸리티는 IIS에서 실행되는 웹 사이트 목록을 표시하고 인증서를 발급할 사이트를 선택하라는 메시지를 표시합니다.

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

인증서 갱신 문제, 기타 중요한 메시지 및 남용에 대한 알림을 보낼 이메일 주소를 지정합니다(여러 이메일 주소를 쉼표로 구분하여 지정할 수 있음). 사용 약관에 동의해야 하며 Windows ACME Simple은 Let's Encrypt 서버에 연결하고 웹 사이트에 대한 새 SSL 인증서를 자동으로 생성하려고 시도합니다.

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

IIS용 SSL Let's Encrypt 인증서 생성 및 설치 프로세스는 완전히 자동화되어 있습니다.

기본적으로 도메인 유효성 검사는 http-01 유효성 검사(SelfHosting)에서 수행됩니다. 방법. 이렇게 하려면 웹 서버를 가리키는 도메인 DNS 레코드가 있어야 합니다. 수동 모드(전체 옵션)에서 WACS를 실행할 때 유효성 검사 유형을 선택할 수 있습니다. 4 [http-01] IIS에서 임시 응용 프로그램 만들기(권장) . 이 경우 Let's Encrypt 서버가 도메인 유효성 검사를 수행할 수 있는 작은 응용 프로그램이 IIS 웹 서버에 생성됩니다.

참고 . TLS/HTTP 유효성 검사 동안 HTTP(80/TCP) 및 HTTPS(443/TCP) 프로토콜을 통한 전체 DNS 이름으로 인터넷에서 사이트에 액세스할 수 있어야 합니다.

WACS 도구는 인증서의 개인 키(*.pem), 인증서 자체 및 기타 여러 파일을 C:\Users\%username%\AppData\Roaming\letsencrypt-win-simple . 그런 다음 백그라운드에서 생성된 Let's Encrypt SSL 인증서를 설치하고 IIS 사이트에 바인딩합니다. 사이트에 설치된 SSL 인증서(예:자체 서명된 인증서)가 있는 경우 새 인증서로 교체됩니다.

IIS 관리자에서 사이트 바인딩을 엽니다. 웹사이트 설정 및 Let's Encrypt Authority X3에서 발급한 인증서를 사용하는지 확인 .

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

Windows 신뢰할 수 있는 루트 인증 기관을 업데이트한 경우 이 인증서는 컴퓨터에서 신뢰할 수 있는 것으로 나타납니다.

웹 호스팅 -> 인증서 아래의 컴퓨터 인증서 저장소에서 Let's Encrypt IIS 인증서를 찾을 수 있습니다. .

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

Windows ACME Simple은 Windows 작업 스케줄러(win-acme-renew (acme-v02.api.letsencrypt.org) ) 인증서를 자동으로 갱신합니다. 작업은 매일 시작되며 인증서 갱신은 60일 후에 수행됩니다. 이 작업은 다음 명령을 실행합니다.

C:\inetpub\letsencrypt\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org"

동일한 명령을 사용하여 Let's Encrypt 인증서를 수동으로 업데이트할 수 있습니다.

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

IIS URL 재작성을 사용하여 HTTP에서 HTTPS로 리디렉션

들어오는 모든 HTTP 트래픽을 HTTPS 웹사이트 URL로 리디렉션하려면 Microsoft URL 재작성 모듈 을 설치하십시오. (https://www.iis.net/downloads/microsoft/url-rewrite) 사이트 설정에서 SSL 필요 옵션이 비활성화되어 있는지 확인하십시오. 이제 재작성 규칙을 사용하여 web.config에서 리디렉션을 구성합니다.

<system.webServer>
<rewrite>
<rules>
<rule name=”HTTP to HTTPS Redirect” enabled=”true” stopProcessing=”true”>
<match url=”(.*)” />
<conditions>
<add input=”{HTTPS}” pattern=”off” ignoreCase=”true” />
</conditions>
<action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}” appendQueryString=”true” redirectType=”Permanent” />
</rule>
</rules>
</rewrite>
</system.webServer>

IIS 관리자 GUI를 통해 URL 재작성 확장을 사용하여 트래픽 리디렉션을 구성할 수도 있습니다. 사이트 선택 -> 사이트 이름 -> URL 재작성 .

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

새 규칙 만들기 규칙 추가 -> 빈 규칙 .

규칙 이름을 지정하고 다음 매개변수 값을 변경하십시오.

  • 요청된 URL :패턴과 일치
  • 사용 :정규 표현식
  • 패턴 :(.*)

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

조건에서 섹션에서 논리적 그룹화 변경 :모두 일치 및 추가 클릭 . 다음 설정을 지정하십시오.

  • 조건 입력: {HTTPS}
  • 입력 문자열 확인: 패턴 일치
  • 패턴: ^OFF$

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

이제 Action 블록에서 다음을 선택하십시오.

  • 작업 유형: 리디렉션
  • 리디렉션 URL :https://{HTTP_HOST}/{R:1}
  • 리디렉션 유형 :영구(301)

브라우저를 열고 HTTP 주소로 사이트를 열어보십시오. HTTPS URL로 자동 리디렉션되어야 합니다.

RDS 게이트웨이 및 웹 액세스에서 Let's Encrypt 인증서 사용

RDS Gateway 또는 RDS Web Access를 사용하여 외부 사용자를 회사 네트워크에 연결하는 경우 자체 서명된 인증서 대신 Let's Encrypt의 신뢰할 수 있는 SSL 인증서를 사용할 수 있습니다. Windows Server에서 원격 데스크톱 서비스를 보호하기 위해 Let's Encrypt 인증서를 올바르게 설치하는 방법을 고려하십시오.

RDSH 역할이 원격 데스크톱 게이트웨이 서버에도 설치된 경우 관리자가 아닌 사용자가 WACS 파일(내 예에서는 c:\inetpub\letsencrypt)과 Let's encrypt 인증서 및 키( C:\ProgramData\win-acme)가 저장됩니다.

그런 다음 위에서 설명한 대로 RD 게이트웨이 서버에서 wacs.exe를 실행합니다. 원하는 IIS 사이트를 선택합니다(일반적으로 기본 웹 사이트 . Let's Encrypt가 새 인증서를 발급하여 IIS 웹사이트에 바인딩하면 자동 인증서 갱신 작업이 작업 스케줄러에 나타납니다.

이 인증서를 수동으로 내보내고 SSL 바인딩을 통해 필요한 RDS 서비스에 바인딩할 수 있습니다. 그러나 Let's Encrypt 인증서가 갱신되면 60일마다 수동으로 이 단계를 수행해야 합니다.

Let's Encrypt 인증서를 업데이트한 후 PowerShell 스크립트를 사용하여 SSL 인증서를 RDS 게이트웨이에 자동으로 바인딩할 수 있습니다.

win-acme에 준비된 PowerShell 스크립트가 있습니다. 프로젝트 – ImportRDGateway.ps1 (https://github.com/PKISharp/win-acme/tree/master/dist/Scripts ), 원격 데스크톱 서비스에 대해 선택한 SSL 인증서를 설치할 수 있습니다. 이 스크립트의 주요 단점은 새 인증서의 지문을 수동으로 지정해야 한다는 것입니다.

ImportRDGateway.ps1 <certThumbprint>

지정된 IIS 사이트에서 인증서 지문을 자동으로 가져오려면 수정된 스크립트 ImportRDGateway_Cert_From_IIS.ps1를 사용하세요. (ImportRDGateway.ps1 기반).

이 스크립트를 수동으로 실행할 수 있습니다.

powershell -File ImportRDGateway_Cert_From_IIS.ps1

RDS 게이트웨이가 인덱스 0인 IIS "기본 웹 사이트"에서 실행되는 경우 변경 없이 스크립트를 사용할 수 있습니다.

IIS에서 사이트 ID를 가져오려면 PowerShell 콘솔을 열고 다음을 실행합니다.

Import-Module WebAdministration
Get-ChildItem IIS:Sites|ft -AutoSize

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치 ID 열은 사이트의 색인을 표시하고 여기서 1을 뺍니다. 결과 색인은 0 대신 지정해야 합니다. PowerShell 스크립트의 27행:

$NewCertThumbprint = (Get-ChildItem IIS:SSLBindings)[0].Thumbprint

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

이제 win-acme-renew를 엽니다. 스케줄러 작업 및 작업 탭에서 SSL 인증서를 업데이트한 후 ImportRDGateway_Cert_From_IIS.ps1 스크립트를 실행하는 새 작업을 추가합니다.

PowerShell 실행 정책을 변경하지 않으려면 다음 명령을 사용하여 스크립트를 실행할 수 있습니다.

PowerShell.exe -ExecutionPolicy Bypass -File c:\inetpub\letsencrypt\ImportRDGateway_Cert_From_IIS.ps1

IIS 웹 서버/RDS에 무료 Let s Encrypt TLS/SSL 인증서 설치

이제 SSL 인증서를 RDS에 바인딩하는 스크립트가 Let's Encrypt 인증서가 갱신된 직후에 실행됩니다. 이 경우 RD 게이트웨이 서비스는 다음 명령을 사용하여 자동으로 다시 시작됩니다.

Restart-Service TSGateway

[aler] TSGateway 서비스가 다시 시작되면 현재 모든 사용자 세션의 연결이 끊어지므로 60일에 한 번씩 인증서 갱신 작업 실행 빈도를 변경하는 것이 좋습니다.[/alert]