経緯
素の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のアプリを起動します。
先ほどまではログイン画面になる前にエラーになっていたのですが、ログイン画面が表示されログインできるようになりました。
