AWS WorkSpacesでクライアント証明書によるアクセス制御をする


経緯

素のWorkSpaceだとユーザーIDとパスワードが分かれば誰でも接続できてしまいます。

そこで、クライアント証明書を発行して、その証明書があるデバイスからしか接続できないようにして、セキュリティーを高めます。

ちなみにWorkSpacesでは、下記図のように簡単にPC以外のデバイスをアクセス制御する事ができます。

クライアント証明書の作成

認証局(CA)の作成

今回はAmazonLinuxを認証局とします。

AmazonLinuxにはOpenSSLは既にインストールされていたので、最新に更新しておきます。

$ sudo yum update -y

CAを構成していきます。

# 作業フォルダの作成
cd /etc/pki
sudo mkdir hogeCA
cd hogeCA

# 署名した証明書の保管フォルダを作成
sudo mkdir newcerts

# 証明書のラベル付けに使用するシリアルファイルを作成
echo "01" | sudo tee serial
sudo touch index.txt

# openSSL設定ファイルのコピー
sudo cp ../tls/openssl.cnf .

sudo vi openssl.cnf

openssl.cnfの下記項目を編集して保存します。

[ CA_default ]
dir = /etc/pki/hogeCA

[ v3_ca ]
# 鍵の用途
keyUsage = critical, digitalSignature, cRLSign, keyCertSign

下記を実行してCAの

  • CAの公開鍵:cacert.pem
  • CAの秘密鍵:cakey.pem

を作成します。

sudo openssl req -new -x509 -keyout cakey.pem -out cacert.pem -days 3560 -config openssl.cnf

Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Osaka
Locality Name (eg, city) [Default City]:Chuo-ku
Organization Name (eg, company) [Default Company Ltd]:HOGE Co.,Ltd.
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:ca.hoge.jp
Email Address []:

クライアント証明書の作成

下記を実行してクライアントの公開鍵と秘密鍵を作成します。

sudo mkdir client
cd client

#秘密鍵の作成
sudo openssl genrsa -out client.key 2048

# 公開鍵の作成
sudo openssl req -new -key client.key -out client.csr -sha256

Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Osaka
Locality Name (eg, city) [Default City]:Chuo-ku
Organization Name (eg, company) [Default Company Ltd]:HOGE Co.,Ltd.
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:client.hoge.co.jp
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xxxxx    # 任意のパスワード入力
An optional company name []:

OpenSSLの設定ファイルをコピーします。

sudo cp ../../tls/openssl.cnf ./openssl.cnf
sudo vi openssl.cnf

openssl.cnfの下記項目を編集して保存します。

[ CA_default ]
dir = /etc/pki/hogeCA
private_key = $dir/cakey.pem

[ usr_cert ]
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
#nsComment = "OpenSSL Generated Certificate"
extendedKeyUsage = clientAuth

作成したクライアント証明書をCAに署名してもらいます。

# 認証局に署名してもらう
sudo openssl ca -config openssl.cnf -out client.crt -in client.csr
(CAの秘密鍵のパスワードを入力)

クライアントにインストールするPKCS12のファイルを作成します。

# クライアントにインストールするPKCS12のファイルを作成
sudo openssl pkcs12 -export -in client.crt -inkey client.key -name hoge.com -certfile ../cacert.pem -out client.p12
(Enter Export PasswordでCSRのチャレンジパスワードを入力)

クライアントPCに証明書のインストール

今回はwindowsからWorkSpacesへアクセスします。
WorkSpacecサービスより”ディレクトリ”を選択して、”アクセス制御のオプション”より”信頼されたwindowsデバイスのみにWorkSpacesへのアクセスを許可”にチェックを入れ、CAの公開鍵(cacert.pem)をインポートして設定内容を更新します。

クライアントPCからWorkSpacesへアクセスしようとしたところ、エラーが出て接続できなくなりました。

クライアント証明書のインストール

クライアントPC上で、先ほど作成したclient.p12をダブルクリックします。
今回は保存場所は”現在のユーザー”としました。

何も変更せずに次へ

何も変更せずに次へ

インポートを完了します。

確認します。

WorkSpacesのアプリを起動します。
先ほどまではログイン画面になる前にエラーになっていたのですが、ログイン画面が表示されログインできるようになりました。

,

コメントを残す

メールアドレスが公開されることはありません。