我が家で稼働中のWindows Server 2016 Essentialsが重くなったりWindows Defenderがなぜか動作しない状態になっていたことから、お盆休みの友としてWindows Server Essntialsを再インストールして環境を再構築しています。
インストール後のサーバーダッシュボードを介したRemoteweb Accessの構成や、クライアントコンピューターへのクライアントコネクターのインストールが失敗したため調べていたところ、主に利用するTLSの設定を中心に修正が必要なことがありましたので、備忘のため残しておきます。
1. Active Directoryの継続
旧環境からActive Directoryのアカウントを継続利用するために、ADはそのまま継続させます。
我が家ではセカンダリーのドメインコントローラーを導入していましたから、FSMOの役割をすべていったんセカンダリーに移し、サーバーはきれいに再インストールすることにしました。
再インストール後にまずActive Directoryの役割を追加の上、Active DirectoryのFSMOをEssentialsサーバーに戻したうえで、Essentialsエクスペリエンスのロールを構成しました。
新たにWindows Server Essentialsを導入する場合は、このADの移行のための手順は不要です。
2. サーバー上のTLS設定の修正
サーバー上で.NETFrameworkが利用するTLSのバージョンを修正しなければ、RemoteWeb Accessの構成に失敗します。
調べていたところ、以下のリンク先の情報が見つかったことから、PowerShellを利用してレジストリキーを修正しました。
# PowerShell
New-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -PropertyType DWORD -Force
Restart-Computer -Force
3. Microsoftの提供する無料DDNSはもう利用できない
RemoteWeb Accessを構成する際、ドメイン名を構成する画面が最初に来ます。が、MicrosoftがGodadyと提携して提供する「remotewebaccess.com」のDDNSと無料SSL証明書のサービスは終了しています。
そのため、自前で用意するドメインを利用する必要があります。
が、このドメインを利用するにも制約があり、ウィザード上で指定できるTLD(トップレベルドメイン)には、.comなど一部のドメインしか利用できず、私が取得しているドメインは指定できませんでした。
GUIで構成する
どうしたものかと考えあぐねて調べていたところ、以下のサイトで.comのドメインの勝手証明書をIISで作り、その証明書を使ってウィザードを完走させる手法が紹介されていました。
Alternative Solution: Setup external DNS address & Create own RWA certificate
Below are steps to followto implement this solution. Pre-reqs: Router is forwarding Port 80 and 443 to the Server; Make sure NPS Policy Server is installed; Create a “remotevpn.domain.com” DNS entry for the domain zone you have for your client.
Create Certifcate on Server:
- Use Internet Information Serices (IIS) console to create a domain certificate; Export Certificate to pfx with password to c:\temp folder. This cert will be used for the https://remotevpn.domain.com Remote website.
- Open IIS console, click on the server on left side (root)… on right side, click on Server Certificates.
- Click on Create Domain Certificate request.
- Common Name – this is the remotevpn.domain.com name for the primary cert name
- Organization – the company name
- Org Unit – can leave blank
- City – enter city
- State – enter your state
- Click Next
- Next page will ask to specify the Online Certificate Authority… – click Select to specify the Root CA server (Windows Server CA role).
- For Friendly Name type something like: Anywhere Access VPN; click Finish
- Next click on the new certifcate in the list of certs.. right click to export
- Export to – click the button to create path c:\temp\remotevpn.pfx
- Enter password you can remember.
Setup Anywhere Access using new Certificate
- Open the Anywere Access window – from Dashboard console, Settings, Anywhere access.
- Click on the option to Setup own domain.
- Select I want to use a domain I already own.
- Type in domain name: remotevpn.domain.com; Click Next
- Select – Set up my domain manually; Click Next
- Type in the url – https://remotevpn.domain.com. If your domain name is different, click on the change button.
- Click on I want to use an existing SSL certficate; click next
- Check box at bottom: I have manually configured my domain name; click next
- Import the trusted Certificate
- Browse to file: c:\temp\remotevpn.pfx
- Type in password you used; Click next
- This should now run through wizard to install Remote Web Access & VPN Connections.
- This should complete the process.
この手順に従い、一度仮で勝手ドメインを利用しウィザードを終え、その後自身が取得しているドメインの証明書をIISやRDゲートウェイ、ルーティングとリモートアクセスの機能に設定することとしました。
ウィザード完了後、Certify the Webを用いてLet’s Encryptから自身の保有するドメインの証明書を取得、設定します。
PowerShellで構成する
一度上の方法で設定したものの、時間がたつとダッシュボードの正常性に「リモートデスクトップサービスが正しく構成されていません」といったエラーが出ます。
そのため、Certify the Webから証明書取得後.pfkファイルに書き出し、それをCertify the Webのスクリプト機能からPowerShellのSet-WssDomainNameConfigurationコマンドレットを実行してインポートさせることにしました。
このコマンドレットでドメイン名と合わせて証明書をインポートしてあげればOKでした。
コマンドレット経由の場合TLDのチェックも行われないため、GUIでは設定できないTLDでも設定ができました。
4. サーバーとクライアントコンピューターのTLS設定の修正
インストール直後の状態だとクライアントコンピューターでも、コネクターのインストールが完了しないため、サーバーとクライアントの両方で.NETFrameworkが利用するTLSに関するレジストリーを修正します。
以下のコードを.regファイルに保存し、実行します。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
これらの修正を施すことで、正常に動作するようになりました。
RWAの機能はNextCloudをフロントにするように構成しましたが、記憶域スペース上の共有フォルダーやSSTP-VPN、クライアントコンピューターのバックアップなどの機能は現役です。
まだまだEssentialsサーバーには活躍してもらおうと思います。