暗号化証明書
暗号化キーは証明書を使用することで適切に管理できます。エンジン サービスを実行しているユーザーについては、証明書を証明書ストアに保存する必要があります。[User accounts] (ユーザー アカウント) をご確認ください。
暗号化証明書は、暗号化キーを囲むシェルとして機能します。証明書の有効期限が切れていてもキーを取得できるため、有効期限が切れた暗号化証明書を更新する必要はありません。
暗号化キー
暗号化ソリューションで使用されるキーの種類は 2 つあります。
- データの暗号化キー
- キーの暗号化キー
データの暗号化キー
データ暗号化キー (DEK) は、データを AES-256 で暗号化するために自動生成されるキーです。暗号化するオブジェクトごとに新しいキーが生成されます。
キーの暗号化キー
キーの暗号化キー (KEK) は、データの暗号化キーのセキュアな非対称暗号化に使用する秘密鍵と公開鍵のペアです。公開鍵はデータの暗号化に使用され、秘密鍵は公開鍵で暗号化されたデータの復号に使用されます。
キーの暗号化に使用されるキーは、Qlik 管理コンソール (QMC) の [Service cluster] (サービス クラスター) リソース内の [Data encryption] (データの暗号化) セクションで指定されています。サービス クラスター をご確認ください。
暗号化証明書の要件:
- 証明キーは、Microsoft 社の Cryptography Next Generation (CNG) キー格納プロバイダーに保存されています。
- エンジン サービスを実行しているユーザーについては、証明書は CurrentUser の下の Windows 証明書ストアに保存されています。
データの暗号化の使用
これは、Qlik Sense においてデータの暗号化機能を使用する際の一般的なワークフローです。
- 暗号化の証明書を作成:Windows PowerShell を使用した暗号化証明書の作成。
- 暗号化を有効にし、キーを指定:暗号化の有効化とキーの指定。
- マルチノードを展開、暗号化の証明書をエクスポート:Windows PowerShell を使用した暗号化証明書のエクスポート。
- マルチノードを展開、ノードすべてに暗号化の証明書をインポート:Windows PowerShell を使用した暗号化証明書のインポート。
QlikView と共有する、QVD ファイルの暗号化
QlikView と Qlik Sense Enterprise on Windows の両方で使用する QVD ファイルがある場合は、両製品で同じサムプリントが定義されていることを確認します。
暗号化の有効化とキーの指定
Qlik Associative Engine は、QMC の暗号化キーのサムプリントを定義することで構成されます。証明書の [Thumbprint] (サムプリント) フィールドの値をコピーして、QMC の [Encryption key] (暗号化キー) フィールドに貼り付けます。
次の手順を実行します。
- [Certificate Manager] (証明書の管理) ツール (certmgr.msc) を開きます。
- 証明書を確認します。
- 証明書を右クリックして [Open] (開く) を選択します。
-
[Details] (詳細) タブで [Thumbprint] (サムプリント) フィールドの値をコピーします。
-
QMC で、[サービス クラスター] > [サムプリント] の順に移動します。
データ暗号化のオプションの一方、あるいは両方を有効化: [QVF 暗号化] と [QVD 暗号化]。
サムプリントの値を [暗号化キー] 項目に貼り付けます。
Qlik Sense Enterprise on Windows は、スペースなしの 40 桁の 16 進文字列形式のSecure Hash Algorithm 1 (SHA-1) サムプリントを受け入れます。
証明書のサムプリントに 56 38 88 bb 6a ea 55 eb 0d 33 d9 d8 b9 09 e0 d2 ef 26 ff bd のようにスペースが含まれている場合は、次のように [暗号化キー] 項目に入力します:
すべての QVF および QVD が新しい鍵で保存されるまで、古い鍵を含む証明書をサーバーに保管してください。
暗号化証明書の管理
証明書を管理するためのツールは数多くありますが、このドキュメントでは、Windows PowerShell と Microsoft 管理コンソールを使用した証明書の作成と配布に焦点を当てます。
他のツールを使用する場合は、次の要件を満たす必要があります。
- RSA キーが使用されている
- CNG キー格納プロバイダーにキーが保存されている
- エンジン サービスを実行しているユーザーの場合、証明書が証明書ストアに保存されている
Windows PowerShell を使用した暗号化証明書の作成
認証局 (CA) によって発行された証明書を使用する必要はありません。独自の自己署名証明書を発行して署名することもできます。作成する暗号化証明書は、エンジン サービスを実行しているユーザーの証明書ストアに保存する必要があります。
新しい暗号化証明書を作成するには、New-SelfSignedCertificate コマンドレットを使用して自己署名証明書を作成します。
構文: Windows Server 2016 以降
構文: Windows Server 2012 R2
New-SelfSignedCertificate コマンドレット パラメーター Windows Server 2016 以降
PowerShell for Windows Server 2016 以降を使用して証明書を作成する際には、少なくとも次のパラメータを定義する必要があります。
-Subject
新しい証明書のサブジェクトに表示される文字列を指定します。このコマンドレットは、等号を含まない値の前に CN= を付けます。複数のサブジェクト相対識別名 (RDN としても知られる) の場合は、各サブジェクト相対識別名をコンマ (,) で区切ります。相対識別名の値にコンマが含まれる場合は、各サブジェクト相対識別名をセミコロン (;) で区切ります。
-Subject <証明書名>
-KeyAlgorithm
新しい証明書に関連付けられた非対称キーを作成するアルゴリズムの名前を指定します。RSA でなければなりません。
-KeyAlgorithm RSA
-KeyLength
新しい証明書に関連付けられたキーの長さをビット単位で指定します。
-KeyLength <キーの長さ、たとえば 4096>
-Provider
このコマンドレットが証明書の作成に使用する KSP または CSP の名前を指定します。Microsoft Software Key Storage Provider である必要があります。
-Provider "Microsoft Software Key Storage Provider"
-KeyExportPolicy
証明書に関連付けられている秘密キーのエクスポートを管理するポリシーを指定します。このパラメータに指定できる値は次のとおりです:
- エクスポート可能
- ExportableEncrypted (既定)
- NonExportable
-KeyExportPolicy ExportableEncrypted
-CertStoreLocation
新しい証明書を格納する証明書ストアを指定します。現在のパスが Cert:\CurrentUser または Cert:\CurrentUser\My の場合、既定のストアは Cert:\CurrentUser\My です。それ以外の場合は、このパラメータに Cert:\CurrentUser\My を指定する必要があります。
-CertStoreLocation "cert:\CurrentUser\My"
New-SelfSignedCertificate コマンドレット パラメーター Windows Server 2012 R2
PowerShell for Windows Server 2012 R2 を使用して証明書を作成する際には、少なくとも次のパラメータを定義する必要があります。
-DnsName
証明書の件名代替名の拡張に 1 つ以上の文字列を入力するように指定します。最初の DNS 名も、件名と発行者名として保存されます。
-DnsName <証明書名>
-CertStoreLocation
新しい証明書を格納する証明書ストアを指定します。現在のパスが Cert:\CurrentUser または Cert:\CurrentUser\My の場合、既定のストアは Cert:\CurrentUser\My です。それ以外の場合は、このパラメータに Cert:\CurrentUser\My を指定する必要があります。
-CertStoreLocation "cert:\CurrentUser\My"
New-SelfSignedCertificate の既定 Windows Server 2012 R2
次の既定は、Windows Server 2012 R2 の New-SelfSignedCertificate コマンドレットに適用されます。
- キーのアルゴリズム: RSA
- キーの長さ: 2048
- 拡張キーの使用 (EKU): クライアント認証とサーバー認証
- キーの使用: デジタル署名、キーの暗号化 (a0)
- 有効期間: 1 年
例: PowerShell for Windows Server 2016 以降を使用したデータ暗号化の証明書の作成
この例では、test というユーザーが、サブジェクトが MyTestCert で、キーの長さが 4096 ビットの、自己署名付きのエクスポート可能な暗号化証明書を作成しています。証明書は Cert:\CurrentUser\My に保存されます。
Microsoft PowerShell で次のコマンドを入力します。
PS C:\Users\test> New-SelfSignedCertificate -Subject MyTestCert -KeyAlgorithm RSA -KeyLength 4096 -Provider "Microsoft Software Key Storage Provider" -KeyExportPolicy ExportableEncrypted -CertStoreLocation "cert:\CurrentUser\My"
既定では、[NotAfter] パラメータが定義されていない場合、証明書は 1 年後に失効します。この例では、証明書は 3 年後に失効します:
PS C:\Users\test> New-SelfSignedCertificate -Subject MyTestCert -KeyAlgorithm RSA -KeyLength 4096 -Provider "Microsoft Software Key Storage Provider" -KeyExportPolicy ExportableEncrypted -CertStoreLocation "cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(3)
結果:
証明書が作成されると、Microsoft PowerShell に次のように表示されます:
Windows PowerShell を使用した暗号化証明書のエクスポート
暗号化証明書をエクスポートするには、Export-PfxCertificate コマンドレットを使用します。
構文:
Export-PfxCertificate コマンドレット パラメータ
証明書をエクスポートする際には、少なくとも次のパラメータを定義する必要があります。
-cert
エクスポートする証明書へのパスを指定します。
-cert cert:\currentuser\My\<証明書のサムプリント>
-FilePath
エクスポートする PFX ファイルのパスを指定します。
-FilePath <ファイル名>.pfx
-Password
エクスポートした PFX ファイルを保護するために使用するパスワードを指定します。パスワードは安全な文字列の形式にする必要があります。このパラメータを指定しないと、エラーが表示されます。
-Password <パスワードまたは変数>
例: データ暗号化証明書のエクスポート
この例では、test という名前のユーザーが、以前に作成した暗号化証明書を PFX ファイルにエクスポートします。
-
まず、 テキスト形式のパスワード文字列からなる安全な文字列を作成し、$mypwd 変数に格納します。このために、ConvertTo-SecureString コマンドレットを使用しています。
Microsoft PowerShell で次のコマンドを入力します。
PS C:\Users\test> $mypwd = ConvertTo-SecureString -String "MyPassword" -Force -AsPlainText
-
次に、Export-PfxCertificate コマンドレットを使用して、サムプリント 563888bb6aea55eb0d33d9d8b909e0d2ef26ffbd で暗号化証明書の実際のエクスポートを続行します。前の手順で作成されたパスワード変数は、エクスポートされた PFX ファイルを保護するために呼び出されます。Microsoft PowerShell で次のコマンドを入力します。
PS C:\Users\test> Export-PfxCertificate -cert cert:\currentuser\My\563888bb6aea55eb0d33d9d8b909e0d2ef26ffbd -Filepath MyTestCert.pfx -Password $mypwd
結果:
証明書がエクスポートされると、Microsoft PowerShell に次のように表示されます:
Microsoft 管理コンソールを使用した暗号化証明書のバックアップ
証明書のバックアップは常に作成しておく必要があります。証明書がサーバーから失われた場合、またはハードディスクに障害が発生した場合は、暗号化されたアプリを開くことができない場合があります。必要な間、証明書のバックアップを安全に保持するのは、ユーザーの責任です。
証明書のバックアップ時のエクスポートと同じ手順を使用できます。Windows PowerShell を使用した暗号化証明書のエクスポート を参照してください。
暗号化証明書のバックアップには、Microsoft 管理コンソールを使用する方法もあります。次の例は、Microsoft 管理コンソールを使用して、SSL 証明書を秘密キーでエクスポートまたはバックアップする方法を示しています。
次の手順を実行します。
- SSL 証明書がインストールされている Windows サーバーで、Microsoft 管理コンソールを開きます。Windows の検索メニューに「mmc」と入力して開きます。
- コンソールウィンドウで、[ファイル] > [スナップインの追加と削除] をクリックします。
- [スナップインの追加と削除] ウィンドウで、左側の [利用可能なスナップイン] ペインから [証明書] を選択し、[追加 >] をクリックします。
- ダイアログで、[ユーザー アカウント] を選択し、[次へ] をクリックします。
- [スナップインの追加と削除] ウィンドウで、 [OK] をクリックします。
-
コンソール ウィンドウの左側の [コンソール ルート] ペインで、[証明書 (現在のユーザー)] を展開し、エクスポートまたはバックアップする証明書を見つけます。
- 中央のウィンドウで、エクスポートまたはバックアップする証明書を右クリックし、 [すべてのタスク] > [エクスポート] をクリックします。
- 証明書のエクスポート ウィザードの [証明書のエクスポート ウィザードへようこそ] ページで、[次へ] をクリックします。
- [秘密キーのエクスポート] ページで、[はい、秘密キーをエクスポートします] を選択し、[次へ] をクリックします。
-
[ファイル形式のエクスポート] ページで、[個人情報交換 - PKCS#12 (.PFX)] を選択し、[可能であれば証明書パスにすべての証明書を含める] をオンにします。
警告メモ[エクスポートが成功した場合は秘密キーを削除する] を選択しないでください。[次へ] をクリックします。
-
[セキュリティ] ページで、[パスワード] ボックスをチェックし、パスワードを作成して確認します。
情報メモこのパスワードは、証明書を秘密キーでインポートまたは復元するときに必要になります。次に、 [グループ名またはユーザー名] ボックスをオンにします。該当する場合は、秘密キーを使用して証明書へのアクセスを割り当てる Active Directory ユーザーまたはグループ アカウントを選択します。次に [追加] をクリックします。
[次へ] をクリックします。
-
[エクスポートするファイル] ページで、 [参照] をクリックしてバックアップ ファイルの保存場所とファイル名を指定し、 [保存] をクリックします。
[エクスポートするファイル] ページに戻り、 [次へ] をクリックします。
- [証明書のエクスポート ウィザードの完了] ページで、設定が正しいことを確認し、 [完了] をクリックします。
- エクスポートが成功し、秘密キーを持つ SSL 証明書が選択した場所に保存されたことを伝えるメッセージが表示されます。
Windows PowerShell を使用した暗号化証明書のインポート
他のコンピューターなどに暗号化証明書をインポートするには、Import-PfxCertificate コマンドレットを使用します。
構文:
Import-PfxCertificate コマンドレット パラメータ
証明書をインポートする際には、少なくとも次のパラメータを定義する必要があります。
-CertStoreLocation
証明書のインポート先となるストアのパスを指定します。このパラメータを指定しない場合、現在のパスが保存先ストアとして使用されます。
-CertStoreLocation cert:\currentuser\My
-FilePath
PFX ファイルのパスを指定します。
-FilePath <ファイル名>.pfx
-Exportable
オプション。
インポートした秘密キーをエクスポートできるかどうかを指定します。このパラメータを指定しない場合、秘密キーはエクスポートできません。
-Exportable
-Password
インポートされた PFX ファイルのパスワードを安全な文字列の形式で指定します。
-Password $mypwd
例: データ暗号化証明書のインポート
この例では、test2 という名前のユーザーが、以前に PFX ファイルにエクスポートされたサムプリント 563888BB6AEA55EB0D33D9D8B909E0D2EF26FFBD を使用して暗号化証明書をインポートします。
-
まず、 テキスト形式のパスワード文字列からなる安全な文字列を作成し、$mypwd 変数に格納します。これには、ユーザー test2 は [ConvertTo-SecureString] コマンドレットを使用しています。
Microsoft PowerShell で次のコマンドを入力します。
PS C:\Users\test2> $mypwd = ConvertTo-SecureString -String "MyPassword" -Force -AsPlainText
-
次に、Import-PfxCertificate コマンドレットを使用して、PFX ファイルの実際のインポートに進みます。前の手順で作成されたパスワード変数は、PFX ファイルにアクセスするために呼び出されます。Microsoft PowerShell で次のコマンドを入力します。
PS C:\Users\test2> Import-PfxCertificate -CertStoreLocation cert:\currentuser\My -FilePath MyTestCert.pfx -Exportable -Password $mypwd
結果:
証明書がエクスポートされると、Microsoft PowerShell に次のように表示されます:
Microsoft 管理コンソールを使用した暗号化証明書の復元
証明書を復元するときにインポートと同じ手順を使用できます。Windows PowerShell を使用した暗号化証明書のインポート を参照してください。
Microsoft 管理コンソールを使用した暗号化証明書のバックアップ の説明に従って Microsoft 管理コンソールを使用して証明書をバックアップした場合は、次の例に従って SSL 証明書を復元します。
次の手順を実行します。
- SSL 証明書がインストールされている Windows サーバーで、Microsoft 管理コンソールを開きます。Windows の検索メニューに「mmc」と入力して開きます。
- コンソールウィンドウで、[ファイル] > [スナップインの追加と削除] をクリックします。
- [スナップインの追加と削除] ウィンドウで、左側の [利用可能なスナップイン] ペインから [証明書] を選択し、[追加 >] をクリックします。
- ダイアログで、[ユーザー アカウント] を選択し、[次へ] をクリックします。
- [スナップインの追加と削除] ウィンドウで、 [OK] をクリックします。
-
コンソール ウィンドウの左側の [コンソール ルート] ペインで、[証明書 (現在のユーザー)] を展開し、[個人] フォルダーを右クリックして、[すべてのタスク] > [インポート] を選択します。
- [証明書のインポート ウィザードの開始] ウィンドウで、[次へ] をクリックします。
-
[インポートするファイル] ページで、[参照] をクリックしてインポートする PFX ファイルを見つけて選択し、[次へ] をクリックします。
情報メモ既定では X.509 証明書 (* .cert、*.crt) ファイル タイプのみを検索するように設定されているため、ファイル エクスプローラー ウィンドウのファイル タイプ ドロップダウンですべてのファイル (*.*) を選択してください。 -
[秘密キーの保護] ページで、SSL 証明書をエクスポートまたはバックアップしたときに作成したパスワードを入力します。
次に、[このキーをエクスポート可能としてマークする] チェックボックスをオンにします。これは、必要なときに SSL 証明書をバックアップまたはエクスポートできることを意味します。
次に、 [すべての拡張プロパティを含める] チェックボックスもオンにします。
[次へ] をクリックします。
-
[証明書ストア] ページで、 [すべての証明書を次のストアに配置する] を選択し、 [参照] をクリックします。
[証明書ストアの選択] ウィンドウで、[個人] を選択し、[OK] をクリックします。
[証明書ストア] ページに戻り、 [次へ] をクリックします。
- [証明書のインポートウィザードの完了] ページですべての設定が正しいことを確認し、[完了] をクリックします。
- インポートが正常に完了し、秘密キーを持つ SSL 証明書が個人ストア (フォルダ) に保存されたことを示すメッセージが表示されます。