はじめに

こんにちは

Amazon WorkSpacesのアクセス元を制限したいという場合があるかと思います。そのような場合、IPアクセスコントロールで接続元のIPを絞るということもできますが、接続元のIPで絞れない場合に、証明書認証の設定でアクセス元を絞ることが可能です。

公式ドキュメントはこちら

ざっくりの内容としては、ルート証明書とクライアント証明書を用意し、ルート証明書をWorkSpacesのディレクトリのアクセスコントロールオプションに設定し、クライアント証明書をWorkSpacesの利用許可する端末に設定することで、クライアント証明書が設定された端末からのアクセスのみに制限することができます。

この証明書の発行ですが、自己署名証明書(通称オレオレ証明書)で試してみた!というブログなどはいくつか見かけるのですが、Active Directory証明書サービス(AD CS)で発行することも可能で、試してみましたので紹介となります。

前提

・WorkSpaces構築済み

・EC2上にActive Directory(AD)を導入済み

・WorkSpacesとADをAD Connectorで接続済み

・EC2はwindows server 2025

・WorkSpacesへの接続元端末はMac

・MacからWorkSpacesへ接続可能な状態

事前準備

AD導入済みEC2でサーバーマネージャーの役割と機能の追加からActive Directory証明書サービスをインストールします→Active Directory証明書サービスのインストールする役割サービスで下記を追加

証明機関、証明機関Web登録

インストール後ActiveDirectory証明書サービス構成まで完了したら、発行されたルート証明書をファイル形式にBase-64 encoded X.509を選択してエクスポートします。エクスポートされたルート証明書をWorkSpacesのディレクトリにインポートし、信頼されたデバイスをすべて許可から信頼されたデバイスに変更します。

この時点で接続元のMacにクライアント証明書がないので、WorkSpacesのクライアントアプリで登録コードを入力して続行をクリックすると、認証できませんと表示され、WorkSpacesのアクセスができなくなります。(クライアント証明書が設定されている端末からのみWorkSpacesへアクセス可能な状態)

それではここからAD CSでクライアント証明書を発行する手順の紹介です。

ステップ1: クライアント認証用CSRの生成

EC2インスタンス上のCドライブ直下に、C:\cert_requests フォルダを作成します。

メモ帳などでclientreq.infファイルを作成し、文字コードを「ANSIに設定して、C:\cert_requests\clientreq.infとして保存。

[NewRequest]
Subject = "CN=workspace,OU=Users,DC=test,DC=com"
FriendlyName = "WorkSpaces Client Authentication"
Exportable = TRUE
KeyUsage = "CERT_KEY_ENCIPHERMENT_KEY_USAGE | CERT_DIGITAL_SIGNATURE_KEY_USAGE"
KeyLength = 2048
ProviderName = "Microsoft Enhanced Cryptographic Provider v1.0"
RequestType = PKCS10

[Extensions]
2.5.29.37 = "{text}1.3.6.1.5.5.7.3.2"

(※)上記は一例です

ターミナルを管理者として開き、以下のコマンドを実行してCSRを生成します。
certreq -new C:\cert_requests\clientreq.inf C:\cert_requests\clientreq.req

「要求が作成されました」と表示されれば成功です。

ステップ2: CSRの提出と証明書のダウンロード

Edgeなどのブラウザでhttp://127.0.0.1/certsrvにアクセスします。(必要に応じて、IIS→サイト→Default Web Site→CertSrv→SSL設定→SSLが必要のチェックを外す必要あり)

「証明書を要求する」→「証明書の詳細設定を要求する」と進みます。

C:\cert_requests\clientreq.reqファイルの中身をコピーし、Webページの「保存された要求」のテキストボックスに貼り付けます。

「証明書テンプレート」で「ユーザー」を選択し、「送信」をクリックします。

「証明書は発行されました」という画面が表示されたら、「Base 64 エンコード」下の「証明書のダウンロード」をクリックし、C:\cert_requestsフォルダにclientnew.cerとして保存します。

ステップ3: 証明書のインポートとPFXエクスポート

ターミナルで、以下のコマンドを実行します。
certreq -accept C:\cert_requests\clientnew.cer

Windowsのメニューからcertmgr.mscを実行します。

左のツリーで「個人」 → 「証明書」をクリックします。

発行された証明書を右クリックし、「すべてのタスク」 → 「エクスポート」を選択します。

ウィザードで「はい、秘密鍵をエクスポートします」を選択し、ファイル形式を「Personal Information Exchange (.PFX)」に設定してパスワードを付け、C:\cert_requests\workspace.pfxとして保存します。

ステップ4: MacへのインポートとWorkSpacesへの接続

C:\cert_requestsフォルダにあるworkspace.pfxファイルをMacに転送し、ファイルをダブルクリックしてキーチェーンアクセスにインポートします。(パスワードを聞かれたら設定したパスワードを入力)

必要に応じてキーチェーンにインポートされた証明書を常に信頼に変更

Amazon WorkSpacesクライアントを起動してアクセスします。

先ほどは登録コードを入力して続行をクリックすると、認証できませんと表示されましたが、クライアント証明書を設定できていれば、サインイン画面となり、ユーザー名パスワードを入力してログインできるようになります。