RDS-Gateway@OneGet


RD Web + RD GatewayのみをOneGetで展開する。
いやOneGetはOpenSSL入れてRD用のpfx作るだけだけどね。
大体動いたの確認したぐらいで抜けがないかは未確認。

途中でパスワード入力が必要。

@echo off

::cName exsample.com
::days 365
::設定ファイルの読込
FOR /F "usebackq delims== tokens=1,2" %%i IN ("conf.txt") do SET %%i=%%j

::OneGet入れる
::OPEN SSLのインストール
powershell -NoProfile -Command "iex -Command ((gc 'OneGet.ps1') -join \"`n\")"

powershell -NoProfile -Command "iex -Command ((gc 'OpenSSL.ps1') -join \"`n\")"

::鍵の作成
::作成済みのConfigファイル
set PATH=%PATH%;C:\Program Files\OpenSSL\bin
set OPENSSL_CONF=C:\Program Files\OpenSSL\bin\openssl.cfg

copy "%OPENSSL_CONF%" "%OPENSSL_CONF%.bk"
copy openssl.cfg.bk "%OPENSSL_CONF%"

md c:\ssl
cd c:\ssl

openssl req -x509 -extensions server_auth_win -nodes -days %days% -newkey rsa:4096 -subj "/CN=%cName%" -keyout RD_GATE.key -out RD_GATE.crt
openssl pkcs12 -export -in RD_GATE.crt -inkey RD_GATE.key -out RD_GATE.pfx -name "%cName%"

::RDS GateWayのセットアップ
::バッチの実行パス
cd %~dp0

powershell -NoProfile -ExecutionPolicy Bypass -Command "Add-WindowsFeature RDS-Gateway -IncludeAllSubFeature"
powershell -NoProfile -ExecutionPolicy Bypass -Command "Add-WindowsFeature RDS-Web-Access -IncludeAllSubFeature"
powershell -NoProfile -ExecutionPolicy Bypass -Command "Add-WindowsFeature RSAT-RDS-Gateway"

::PowerShelに引き渡す環境変数へ一時的にセット
set "PARAM_CN=%cName%"

powershell -NoProfile -ExecutionPolicy Bypass -Command "iex -Command ((gc 'ポリシー設定.ps1') -join \"`n\")"

pause

conf.txt
外部参照名と有効期間を決めておく為の外部設定ファイル

cName=exsample.com
days=365

OneGet.ps1
パッケージ管理のインストール

$ExecutionPolicy = Get-ExecutionPolicy
#Write-Host '実行ポリシーは' $ExecutionPolicy
Set-ExecutionPolicy Unrestricted

$path =[System.IO.Path]::Combine($MyInvocation.MyCommand.Path, "install-oneget.exe")


Invoke-WebRequest -Uri http://oneget.org/install-oneget.exe -OutFile $path

Start-Process -FilePath $path -Wait -ArgumentList("/s")

Set-ExecutionPolicy $ExecutionPolicy

OpenSSL.ps1
OpenSSLインストール

ipmo OneGet-Edge

Install-Package -Name OpenSSL.Light -Force

ポリシー設定.ps1
CAP/RAP設定とpfxの読込/設定

Import-Module RemoteDesktopServices
Get-Command ?Module RemoteDesktopServices

#接続承認ポリシー
new-item -path RDS:\GatewayServer\CAP -Name Default-CAP -UserGroups 'Administrators@BUILTIN' -AuthMethod 1
#リソース承認ポリシー
new-item -Path RDS:\GatewayServer\RAP -Name Default-RAP -UserGroups 'Administrators@BUILTIN' -ComputerGroupType 2

#環境変数から参照名受取
$paramCn = $env:PARAM_CN

$strFileName="c:\ssl\RD_GATE.pfx"
If (Test-Path $strFileName){
  $input = Read-Host "pfxのパスワードを入力"
  $mypwd = ConvertTo-SecureString -String $input -Force -AsPlainText
  Import-PfxCertificate -FilePath $strFileName cert:\localMachine\my -Password $mypwd

  dir cert:\localmachine\my | where-object { $_.Subject -eq "CN=" + $paramCn } | ForEach-Object { Set-Item -Path RDS:\GatewayServer\SSLCertificate\Thumbprint -Value $_.Thumbprint }
  Restart-Service TSGateway
}

openssl.cfg.bkは割愛

OpenSSLインストールでbinの中にあるものから下記が追加

[ v3_req ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1

[ server_auth_win ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1

カテゴリー: 運用 タグ: , パーマリンク