経緯
素のWorkSpaceだとユーザーIDとパスワードが分かれば誰でも接続できてしまいます。
そこで、クライアント証明書を発行して、その証明書があるデバイスからしか接続できないようにして、セキュリティーを高めます。
ちなみにWorkSpacesでは、下記図のように簡単にPC以外のデバイスをアクセス制御する事ができます。

クライアント証明書の作成
認証局(CA)の作成
今回はAmazonLinuxを認証局とします。
AmazonLinuxにはOpenSSLは既にインストールされていたので、最新に更新しておきます。
1 | $ sudo yum update -y |
CAを構成していきます。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | # 作業フォルダの作成 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の下記項目を編集して保存します。
1 2 3 4 5 6 | [ CA_default ] dir = /etc/pki/hogeCA [ v3_ca ] # 鍵の用途 keyUsage = critical, digitalSignature, cRLSign, keyCertSign |
下記を実行してCAの
- CAの公開鍵:cacert.pem
- CAの秘密鍵:cakey.pem
を作成します。
1 2 3 4 5 6 7 8 9 | 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 []: |
クライアント証明書の作成
下記を実行してクライアントの公開鍵と秘密鍵を作成します。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 | 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の設定ファイルをコピーします。
1 2 | sudo cp ../.. /tls/openssl .cnf . /openssl .cnf sudo vi openssl.cnf |
openssl.cnfの下記項目を編集して保存します。
1 2 3 4 5 6 7 8 | [ 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に署名してもらいます。
1 2 3 | # 認証局に署名してもらう sudo openssl ca -config openssl.cnf -out client.crt - in client.csr (CAの秘密鍵のパスワードを入力) |
クライアントにインストールするPKCS12のファイルを作成します。
1 2 3 | # クライアントにインストールする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のアプリを起動します。
先ほどまではログイン画面になる前にエラーになっていたのですが、ログイン画面が表示されログインできるようになりました。
