Azure Stack の証明書要求 (CSR) の作成

こんにちは。

今回は Azure Stack version 1901 のインストールに必要な証明書を作成するために必要な証明書要求を作成します。前回の投稿 (Azure Stack の証明書要件 ) で、Azure Stack を利用する際には、最低11個の証明書が必要と記載しました。その作成する証明書の具体的な要件も多くあります。


証明書の要件

Azure Stack で利用する証明書の要件です。公開鍵と秘密鍵を持つ pfx 形式の証明書を準備する必要がありますが、認証機関から発行される証明書は cer ファイルが一般的かと思います。

認証局から発行される cer ファイルを発行する際に必要な要件です。

  • 証明書は、内部の証明機関または公的証明機関のどちらかから発行されている必要があります。 公的証明機関が使用されている場合は、Microsoft の信頼されたルート機関プログラムの一部として基本オペレーティング システム イメージに含まれている必要があります。 詳細な一覧については、 https://gallery.technet.microsoft.com/Trusted-Root-Certificate-123665ca をご覧ください。
  • お使いの Azure Stack インフラストラクチャは、証明書において公開されている証明機関の証明書失効リスト (CRL) の場所にネットワーク アクセスできる必要があります。 この CRL は、http エンドポイントである必要があります
  • 証明書を交換する場合、証明書は、デプロイ時に指定された証明書の署名に使用したのと同じ内部の証明機関、または上記の公的パブリック証明機関のいずれかから発行されたものである必要があります。
  • 自己署名証明書は使用できません。
  • デプロイおよびローテーションの場合は、証明書のサブジェクト名フィールドとサブジェクトの別名 (SAN) フィールドのすべての名前空間をカバーする 1 つの証明書を使用するか、または、各名前空間で利用する予定の Azure Stack サービスが必要とする個別の証明書を使用することができます。 注: どちらの方法でも、それらが必要とされる場所のエンドポイントに対してワイルドカードを使用する必要があります (例: KeyVaultKeyVaultInternal)。
  • 証明書の署名アルゴリズムを SHA1 にすることはできません。
  • 証明書 pfx ファイルの “Key Usage” フィールドには、”Digital Signature” と “KeyEncipherment” の値が含まれている必要があります。
  • 証明書の pfx ファイルの “Enhanced Key Usage” フィールドには、”Server Authentication (1.3.6.1.5.5.7.3.1)” と “Client Authentication (1.3.6.1.5.5.7.3.2)” の値が含まれている必要があります。
  • 証明書の “Issued to:” フィールドは “Issued by:” フィールドと同じにしないでください。
  • サブジェクト名と、サブジェクトの別名の拡張子 (x509v3_config) のサブジェクトの別名が一致するようにします。 サブジェクトの別名フィールドでは、単一の SSL 証明書によって保護される追加のホスト名 (Web サイト、IP アドレス、共通名) を指定できます。

cer ファイルから pfx に変更する必要があります。下記は pfx ファイルに変換する際の要件です。

  • Azure Stack のインストールには公開キーと秘密キーの両方が必要なため、証明書の形式は PFX である必要があります。 秘密キーにはローカル コンピューターのキー属性が設定されている必要があります。
  • PFX 暗号化は、3DES (これは、Windows 10 クライアントまたは Windows Server 2016 証明書ストアからエクスポートする場合の既定です) である必要があります。
  • 証明書の PFX 暗号化は、3 DES になっている必要があります。
  • デプロイの時点で、すべての証明書 pfx ファイルのパスワードが同じである必要があります。
  • 証明書 pfx に対するパスワードは、複雑なパスワードである必要があります。次のパスワードの複雑さの要件を満たしているパスワードを作成します。 8 文字の最小長。 パスワードに、大文字、小文字、0 – 9 の数字、特殊文字、および大文字でも小文字でもない英字のうち 3 種類以上が含まれている。 このパスワードを書き留めておいてください。 デプロイ パラメーターとして使用します。

証明書要求の作成

この色々と書いてある要件を満たす証明書を作成するための、証明書要求は簡単に Powershell で作成することが可能です。Powershell で作成するには、専用のモジュールが必要です。インターネット経由でダウンロードし、Windows 10 や Windows Server から実行することが可能です。

1、下記コマンドを実行して AzsReadinessChecker のインストール

Install-Module Microsoft.AzureStack.ReadinessChecker

2、サブジェクトの指定 (会社名など必要に応じて修正してください)

$subjectHash = [ordered]@{“OU”=”AzureStack“;”O”=”Microsoft“;”L”=”Redmond“;”ST”=”Washington“;”C”=”US“}

3、CSR を出力するフォルダの指定

$outputDirectory = “$ENV:USERPROFILE\Documents\AzureStackCSR”

フォルダが存在しない場合は、作成してください

mkdir $outputDirectory

4、利用するID の指定 (AAD or ADFS)

$IdentitySystem = “AAD”

$IdentitySystem = “ADFS”

5、リージョン名と 外部ドメイン名の指定

$regionName = ‘tokyo’
$externalFQDN = ‘azurestack.contoso.com’

ここで設定した値 ( <regionName>.<externalFQDN> ) が、Azure Stack のエンドポイントに設定されます。

ポータル: portal.east.azurestack.contoso.com

6、CSR を作成します。1枚の証明書ですべてのドメイン名を含める シングルCSR でも、それぞれのドメイン名に1枚の証明書を発行する CSR のどちらのパターンも作成可能です。ただし、運用環境では、シングル CSR は推奨されないようです。また、この CSR 作成で、PaaS 用のドメインを含める CSR を作成することも可能です。 CSR 作成コマンドに “-InclusePaaS” オプションを追加するだけです。

  • 必要なドメイン毎に証明書を発行する場合の CSR 作成

New-AzsCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subjectHash -OutputRequestPath $OutputDirectory -IdentitySystem $IdentitySystem

  • 1枚の証明書で複数のドメインをカバーする CSR 作成

New-AzsCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subjectHash -RequestType SingleCSR -OutputRequestPath $OutputDirectory -IdentitySystem $IdentitySystem

7、出力先に指定したフォルダに CSR が作成されたことを確認します。

これで CSR の作成は完了です。証明書を作成する認証局に CSR を提出し、証明書を発行してもらってください。メモ帳で開けば内容をコピペすることができます!

これで、Azure Stack の要件を満たす証明書を作成することができます。証明書の要件は色々書いてありますが、簡単に CSR を作成できるので問題ありません。CSR を簡単に作成できるので、プライベート CA や、エンタープライズCA だけでなく 外部認証局への依頼も簡単にできるかと思います!

Azs.Deployment.Worksheet 1.1901.207.1 のインストール

Azure Stack の 1901 アップデートがリリースされました。Azure Stack 統合システム、 Azure Stack Development Kitと Azure Stack Master Tool もアップデートされ、新しい機能が増えています。


Azure Stack 1901 Release note


Azure Stack Development Kit Release note


Azure Stack Master Tools 1901以降


これらに加え、Azure Stack のパラメーターシートにあたる、Deployment Worksheet もアップデートされています。

Azs.Deployment.Worksheet 1.1901.207.1


Deployment Worksheet 1.1901.207.1 のインストール

Deployment Worksheet は 1811 から Powershell で提供されるようになりました。そのため、以前のバージョンをインストールしている場合は、まずアンインストールを実施します。

1、Deployment Worksheet のインストールバージョンを確認

get-command start-deployment* | ft -AutoSize

Version の欄を確認してください。下記では、1.1901.207.1 がインストールされていることが確認できます。

2、インストールされているバージョンが古ければ、古いバージョンをアンインストール

Uninstall-Module -Name Azs.Deployment.Worksheet

”Module ‘Azs.Deployment.Worksheet’ is in currently in use” のようなエラーが出た場合は、OS を再起動するなどをして、再度試してください。

3、新しい Deployment Worksheet モジュールのインストール

Install-Module -Name Azs.Deployment.Worksheet

4、新しいバージョンになったかを確認

get-command start-deployment* | ft -AutoSize

5、新しい Deployment Worksheet を起動

Start-DeploymentWorksheet

Customer Setting シート

Network Settings シート

Scale Unit 1 シート

Azure Stack 統合システムを購入した際は、ぜひ確認してみてください!

Azure Stack 1811 と Deployment Worksheet のリリースと

こんにちは。2018年 12月21日 にクリスマスプレゼントとして新しいバージョン1811 がリリースされました。


Azure Stack のアップデート


ASDK 1811 から、メモリのミニマム要件が 192GB に変更されているので注意が必要です。

Azure Stack deployment planning considerations




Customer Deployment Worksheet


また、Azure Stack を導入するときにかならず検討する CDW (Customer Deployment Worksheet ) も新しくなりました。いままでは Excel を利用したものでしたが、Powershell GUI に変更になりました。

どちらも下記からダウンロードが可能です。

いままでは、Excel で管理していたためパラメーターの参照が簡単でしたが、Powershell 版を利用するには、モジュールのインストールが必要です。

モジュールのインストールは簡単で、こちらのコマンドを実行します。Windows 10 のPC で問題なく実行できます。

  • Install-Module -Name Azs.Deployment.Worksheet

モジュールのインストールが完了すると、下記 2つのコマンドを実行できるようになります。

  • Start-DeploymentWorksheet
  • Export-NetMap

Start-DeploymentWorksheet を実行すると、Deployment Worksheet が起動します。


Azure Stack のインストールを検討する際に必須のパラメーターとなります。Azure Stack に興味のある方は、参照してみてください!詳細パラメーターは購入元のベンダーさんから詳しい説明があると思いますが、Azure Stack Operator ドキュメントに記載のある情報は必読です!

Azure Stack Operator Documentation

Azure Stack 導入する際にお役に立てばと思います!

ASDK 1711 (AZURE STACK DEVELOPMENT KIT) で PEP (privileged endpoint) にアクセス

こんにちは。

Azure Stack は、Azure Stack Operator がDomain Admin 権限を利用した管理ができない設計になっています。

Azure Stack Integrated System をインストールして 1711 Update を適用すると、Domain Admin 権限の AzureStackAdmin ユーザーが利用できなくなり、CloudAdmin ユーザーで管理をする形になります。

そのため、Azure Stack の状態確認や ログを取得する場合は ERCS (Emergency Recovery Console System) という仮想マシンにPowershell でリモートログインをして、通常時は限られたコマンドのみ実行することが可能です。

今回は ASDK 1711 で ERCS にログインしてみたいと思います。

PEP とは、Priviladged Endpoint の略でこのエンドポイントを提供しているのが ERCS です。そのため、PEP で許可されたコマンドを確認する場合は ERCS に接続する必要があります。

マイクロソフトのドキュメントでは下記に記載があります。

Using the privileged endpoint in Azure Stack

1、ASDK の物理ホストに AzureStack\Cloudadmin ユーザーでログイン (パスワードはASDKをインストールしたパスワードと同じです。)

2、管理者権限で Powershell を起動します。

3、ERCS に接続する IP アドレスを確認します。(ホスト名でも接続できるみたいですが。。)

IPアドレスの情報は、下記ファイルに記載がありますので参照してみてください。

“C:\CloudDeployment\Logs\AzureStackStampInformation.json”

Emergency Console IP Addresses の項目です。

1.png

4、Winrm コマンドで 接続するERCS のIPアドレスを指定します。

winrm s winrm/config/client ‘@{TrustedHosts=”<IP Address of Privileged Endpoint>“}’

例) winrm s winrm/config/client ‘@{TrustedHosts=”192.168.200.225”}’

2

5、下記コマンドを実行します。

$cred = Get-Credential

入力するユーザー名/パスワード はcloudadmin ユーザーを指定してください。

3.png

5、下記コマンドを実行します。

Enter-PSSession -ComputerName azs-ercs01 -ConfigurationName PrivilegedEndpoint -Credential $cred

4.png

これでPEP ログイン完了する予定だったのですが、エラーでだめでした。

私の環境だけかもしれないのですが、1712 Update (Build 20180103.2) の適用された ASDK では全く同じ手順で PEP に問題なくアクセスできました。

6.png

5.png

バージョンによって できる/できない が大きく変わっていることもあるため、できる限り最新版で検証されると、マルチノードの Integrated System を導入した際にも安心かと思います。

PEP は JEA (Just Enough Administration) で管理されているため、発行できるコマンドはなにか確認してみてください。

Get-Command

6、必要な操作が完了したら、PEP を切断してセッションを削除してください。

セッションは下記コマンドで削除が可能です。

Get-PSSession | Remove-PSSession

7.png

これで以上となります。

Azure Stack Operator として、今までと勝手が違う運用スタイルとなるためいろいろ確認してみてください!

Storage Spaces Direct 物理ディスクのメンテナンスモード状態の解消について

こんにちは。

先日 S2D ノードを再起動する必要があったため、「記憶域スペース ダイレクト サーバーをメンテナンスのためオフラインにする」 を参照しながら、S2D ノードの再起動を実施しました。

S2Dのメンテナンス通りに全ノード再起動を実施し、Storage Job が完了した後でも仮想ディスクが警告状態から回復しない状況を確認しました。サーバーマネージャーから状況を確認すると、いくつかの物理ディスクが警告状態になっていました。

Disk MaintenanceMode2.png

そのため、下記コマンドで確認したところ物理ディスクのみが ”Maintenance Mode” 状態となっていることがわかりました。4ノード構成で、特定の1台に搭載しているキャッシュとキャパシティディスクの12本すべてがメンテナンスモードから復旧していない状態でした。

Disk MaintenanceMode3.png

調べたところ、Technet Forum に メンテナンスモード を手動で終了させるコマンドがあることがわかりました!

===

Storage Spaces Direct (S2D) Disks in Maintenance Mode

<コマンド>

Get-PhysicalDisk | ? OperationalStatus -eq “In Maintenance Mode” | Disable-StorageMaintenanceMode

===

コマンドを発行すると、物理ディスクのメンテナンスモードが無事に解消されました。他のノードからのデータ同期も完了して正常な状態にもどりましたので、同じ事象を確認されたかたは是非試してみてください。

Disk MaintenanceMode4.jpg

KB情報がありましたので、ご参照いただければと思います。

2017年9月の累積パッチを適用すると発生する事象みたいで、ノードのメンテナンスモード設定/解除の操作で発生するみたいですね。。

Disks “In Maintenance Mode” status after September cumulative update KB 4038782 install

以上となります。

 

 

Windows Server 2016 クラスターノードの検疫状態について

こんにちは。

今回は WS2016 のフェールオーバークラスターで新規に追加された クラスターノードの検疫状態 (Node Quarantine) についてです。

Windows Server 2016 のフェールオーバークラスター ノードで、何等かの障害 (ネットワーク障害など) の影響で 1時間以内に 3回 クラスターノードが異常離脱 した場合は そのノードを検疫状態として、障害が発生しているノードのクラスターリソース (仮想マシン や ストレージ) をドレイン し、ノードを一時停止状態にする機能です。この機能により、クラスターノードの障害による仮想マシンへの影響を低減することが目的のようです。

障害が発生したクラスターノードが検疫状態になってから、2時間で再度クラスターサービスを再開するのが 既定の時間ですが、手動で検疫状態を回復させることもできます。

クラスターの検疫は下記マイクロソフトの情報が参考になります。

Windows Server 2016 のフェールオーバー クラスタ リングの新機能

日本語訳がちょっとおかしいですが、、、こちらの機能です。

WS000004.jpg

検疫機能の内容はこちらもブログが参考になります。

Virtual Machine Compute Resiliency in Windows Server 2016

Quarantine:

  • The node is no longer allowed to join the cluster for a fixed time period (default: 2 hours)­
  • This action prevents flapping nodes from negatively impacting other nodes and the overall cluster health
  • By default, a node is quarantined, if it ungracefully leaves the cluster, three times within an hour
  • VMs hosted by the node are gracefully drained once quarantined
  • No more than 25% of nodes can be quarantined at any given time

クラスターノードが検疫状態になると、下記のように表示されます。

WS000000.jpg

この状態になった場合、システムのイベントログにもエラー1676 で 検疫状態になったことが表示されます。また、手動での検疫状態の解除方法の記載もあるので安心です。

WS000001.jpg

2時間で自動で解除されますが、障害を復旧して手動回復させたい場合は該当のクラスターノードのPowershell コマンドを実行します。

Start-ClusterNode -ClearQuarantine

WS000002

そうすることで、検疫状態だった クラスターノードが クラスターに参加します。

WS000003.jpg

障害が発生した際、クラスターの状態とイベントログを確認すれば確実に対応できると思います!

Windows Server 2016 のクラスターでは、仮想マシンの回復性に関してその他にもいろいろな新機能が増えているので、Windows Server 2012R2 までの動作とは違う動きになっているところに注意が必要ですね。

今回紹介したブログなどでその他の新機能情報も確認してみてください!

 

Powershell で FSMO転送

こんにちは。

今回は、PowershellでFSMO転送をするコマンドについてです。

FSMO転送をGUIで実施する際は、ユーザーとコンピューターで転送元から転送先へ接続し PDCエミュレータの操作マスターを変更する…. などの手順で実施されたかたもいると思います。

しかし、Powershell で下記コマンドを利用してFSMO転送する場合、1~2分で完了する作業となります。

Move-ADDirectoryServerOperationMasterRole  –Identity <転送先DCのホスト名> 0,1,2,3,4

下記コマンドレファレンスに記載のとおり、数字の0~4 はそれぞれのFSMOロールに紐づいています。そのため、数字指定ではなく、役割名で指定してもロールを転送することができますし、特定のロールのみの転送も可能です。

— PDCEmulator or 0
— RIDMaster or 1
— InfrastructureMaster or 2
— SchemaMaster or 3
— DomainNamingMaster or 4

Move-ADDirectoryServerOperationMasterRole

わたしの検証環境では、下記の順番でWS2016 のADからFSMO 転送できるか確認してみました。

1.WS2016 AD (FSMO) から WS2012R2 AD へ転送

コマンド: Move-ADDirectoryServerOperationMasterRole –Identity NestedAD02 0,1,2,3,4

2016.png

2.WS2012R2 AD (FSMO) から WS2008R2 AD へFSMO転送

コマンド: Move-ADDirectoryServerOperationMasterRole –Identity NestedAD03 0,1,2,3,4

2012R2.png

3.WS2008R2 AD (FSMO) から WS2016 へFSMO転送

コマンド: Move-ADDirectoryServerOperationMasterRole –Identity NestedAD01 0,1,2,3,4

2008R2.png

WS2008R2 AD 上で、Move-ADDirectoryServerOperationMasterRole を発行すると、コマンドレットが存在しないといった内容のエラーが発生しました。そのため、「Import-Module Active Directory」 コマンドで、ADのモジュールをインポートした後、同じFSMO転送のコマンドを発行することができました。

このように、PowershellでのFSMO転送は非常に簡単に実施できる内容です。FSMO転送を実施する機会はなかなかないと思いますが、WS2008R2のADでも同じコマンドが利用できるので、今後のサポート切れなどのタイミングでAD移行する際に役に立ちそうなコマンドですね!

ポート番号指定での疎通確認方法

※ 2020/08/03 追記
Test-NetConnection コマンドの使い方詳細を下記のブログにアップしましたので、こちらもご参照ください。https://mattu0119.github.io/blog/windows%20server/Test-NetConnection/
—————

新規環境の構築やトラブルシューティング時の通信確認として、Pingを利用する場面は非常に多いと思います。

Ping は非常に簡単に通信確認ができるコマンドですが、特定のTCP ポートで通信確認がしたい場合に便利なコマンドがこれです。

Test-NetConnection

https://docs.microsoft.com/ja-jp/powershell/module/nettcpip/test-netconnection?view=win10-ps/

マイクロソフトドキュメントサイトにコマンドの説明があります。

このコマンドはPowerShellで実行できるコマンドで、TCPのポート番号で疎通確認ができるので非常に便利です。

下記の例では、サーバーからgoogle.co.jp宛にTCP443で通信できるか確認した結果です。

コマンド例:

Test-NetConnection -ComputerName google.co.jp -Port 443

Test-NetConnection -ComputerName 216.58.197.227 -Port 443

オプション:

ComputerName:通信確認したいあて先を指定。ホスト名とIPアドレスのどちらも指定が可能。

Port:通信確認したいポート番号を指定。

 test-netconnection