Boxのデバイストラストを使ってみた

Boxのデバイストラストを使ってみた

Boxのデバイストラストを使ってみた

Boxの「デバイストラスト」というログイン時に端末認証を行う機能を使用してみました。セットアップしたときに踏んだ手順を書き残しときます。

ログイン端末上に、ルート証明書によって署名されたクライアント証明書が存在しているか確認を行う「オプション1 – デバイス固有の証明書の検証」のセットアップ手順になります。

公式記事はこちら: https://support.box.com/hc/ja/articles/360044194993-デバイストラストのセキュリティ要件の設定

IT管理者側の事前準備

  1. IT管理者がCA(「オレオレ認証局」でOK)にてルート証明書(後の手順で作成するクライアント証明書のルートとなる)を予め作成しておく
openssl genrsa -out MyRootCA.key 2048
openssl req -x509 -new -nodes -key MyRootCA.key -sha256 -days 3650 -out MyRootCA.pem
  1. Boxに管理者アカウントでログインし、管理コンソールに#1で作成した証明書(MyRootCA.pem)をアップロードする

クライアント証明書の発行

  1. クライアント側で秘密鍵(MyClient.key)とCSR(MyClient.csr)を発行して、CSRをCA(IT管理者)に提出する
    ※クライアント側と書きましたが、作業自体はルート証明書発行した時と同じ環境で行ってもOK(CA上でクライアント証明書発行作業まで完結できます)
openssl genrsa -out MyClient.key 2048
openssl req -new -key MyClient.key -out MyClient.csr
  1. IT管理者が提出されたCSR(MyClient.csr)をもとに、事前に作成しておいたCAの証明書(MyRootCA.pem)で署名してクライアント証明書(MyClient.pem)を発行する
    ※クライアント証明書(MyClient.pem)がユーザー配布用です。間違って、ルート証明書(MyRootCA.pem)をユーザーに渡さないように!
openssl x509 -req -in MyClient.csr -CA MyRootCA.pem -CAkey MyRootCA.key -CAcreateserial -out MyClient.pem -days 3650 -sha256
  1. クライアント証明書を秘密鍵で署名してPFXを作成し、クライアント端末にインストールする
openssl pkcs12 -inkey MyClient.key -in MyClient.pem -export -out MyClient.pfx

ちなみに、クライアント証明書(MyClient.pfx)のインストール先は、利用しているBox Toolsの種類によって異なるのでご注意を!

[会社の証明書の確認] が有効な場合、Box Toolsが実行されているのと同じユーザーコンテキストで使用可能な証明書ストアに証明書をインストールする必要があります。例えば、マシン全般のインストール環境でBox Toolsが実行されている場合、デバイストラストのチェックはSYSTEMユーザーのコンテキストで実行されます。証明書をユーザーの証明書ストアにのみインストールする場合、デバイストラストのチェックが失敗することがあります。デバイストラストを機能させるため、(他の場所に加えて) ローカルマシンのプロファイルに証明書をプッシュする必要があります。

Ref: https://support.box.com/hc/ja/articles/360044194993-デバイストラストのセキュリティ要件の設定

以上でセットアップは完了です。お疲れ様でした!あとはログインの検証をしてみましょうー

出力ファイルおさらい

この手順で作成されるファイルのまとめです。実際に使用するのは以下の2点:

  • ルート証明書(MyRootCA.pem)を管理コンソールにアップロード
  • クライアント証明書(MyClient.pfx)を端末にインストール
Output file Description
MyRootCA.key CAの秘密鍵
MyRootCA.pem ルート(つまり自己署名)証明書
MyClient.key クライアントの秘密鍵
MyClient.csr クライアントのCSR(これをルート証明書で署名する)
MyClient.pem クライアント証明書(ルート証明書によって署名済み)
MyClient.pfx 秘密鍵とクライアント証明書を内包したPKCS#12形式のクライアント証明書ファイル

おまけ

クライアント証明書がルート証明書に署名されているか確認したい場合、opensslのサブコマンドverifyで検証できます。

openssl verify -CAfile ルート証明書 クライアント証明書
成功例
$ openssl verify -CAfile MyRootCA.pem MyClient.pem
MyClient.pem: OK
失敗例
$ openssl verify -CAfile MyRootCA.pem MyAnotherClient.pem
MyAnotherClient.pem: C = AU, ST = Some-State, O = Internet Widgits Pty Ltd
error 18 at 0 depth lookup:self signed certificate
OK