# キーと証明書の管理

Qlik NPrinting の暗号化には、PEM 形式の X.509 証明書ファイルが必要です。自己署名証明書を生成するか、証明機関 (CA) から署名入りの証明書を取得することができます。NewsStand と Qlik NPrinting ウェブ コンソール のドメイン名は同じため、証明書は 1 つで十分です。

## 制限

* CNG 互換アルゴリズムを使用して生成された証明書は、On-Demand アドオンとは互換性がありません。

## 公開 RSA キーと秘密 RSA キーのペアを PEM 形式で生成する

以下を実行します。

1. Windows コマンド ライン プロンプトを開きます。

2. OpenSSL バイナリ フォルダーに移動します。既定のコマンドは以下のとおりです: ` cd C:\OpenSSL-Win64\bin  `

   必要に応じてフォルダーをカスタマイズすることができます。ファイルはこのフォルダーに作成され、その後、最終的なフォルダーへ移動させることができます。

3. 以下のコマンドを実行します: `openssl genrsa -out NPrinting.key 4096.`

   ` genrsa  ` は、RSA 秘密キーを生成するためのオプションです。` 4096  ` は生成される秘密キーのサイズ (ビット) です。

4. 公開キーのみを PEM 形式でエクスポートしたい場合は、以下のコマンドを実行します: `openssl rsa -in NPrinting.key -outform PEM -pubout -out NPrintingPublic.pem.`

   ` pubout  ` は、公開キーと RSA 秘密キーを抽出する OpenSSL オプションです。

   警告メモ証明書キーはパスフレーズで保護されていてはなりません。

   警告メモ秘密キーは誰にも公開されてはならないもので、証明機関に送信されてはなりません。バックアップを作成して、安全な場所に保存してください。必要に応じて公開キー ファイルを配布できます。

5. 公開キー ファイルを共有する前に、正しいファイルを送信していることを確認できるよう、目視で点検することをお勧めします:

   1. テキスト エディターで NPrinting.key ファイルを開きます。NPrinting.key は秘密キーであり、`  -----BEGIN RSA PRIVATE KEY----- ` で始まります。これは公開してはなりません。

   2. テキスト エディターで NPrintingPublic.pem ファイルを開きます。NPrintingPublic.pem は公開キーで、先頭に `-----BEGIN PUBLIC KEY-----` が付きます。このファイルは共有できます。

### 秘密キーのセキュリティ

Qlik NPrinting は 24 時間年中無休で稼働します。そのため秘密キーを暗号化されていないファイル システム上に保存する必要があります。サービスを再起動するたびに管理者がパスワードを入力する必要があるため、パスワードで秘密キーを保護することは実用的ではありません。管理者にのみアクセス権を与えることで、秘密キー ファイルを保護できます。秘密キー ファイルは TLS でのみ使用され、サーバー上には残りません。

## 自己署名証明書の生成

自己署名証明書は、証明書を所要するエンティティによって署名されたアイデンティティ証明書です。このエンティティは、自身の秘密キーを使用してアイデンティティを証明します。自己署名証明書を使用することで、自分の証明書に自身で署名できます。

次の場合に、自己署名証明書を使用できます。

* HTTPS (HTTP オーバー TLS) を使用してウェブ サーバーを保護するつもりである。
* 自分の証明書に証明機関 (CA) が署名する必要がない。

たとえば、ウェブ サーバーがローカル ネットワーク内で使用される場合にのみ、自己署名証明書を使用できます。

以下を実行します。

1. Windows コマンド ライン プロンプトを開きます。

2. OpenSSL バイナリ フォルダーに移動します。既定のコマンドは `cd C:\OpenSSL-Win64\bin` です。ファイルはこのフォルダーに作成され、その後、最終的なフォルダーへ移動させることができます。

3. 自己署名証明書を作成するには、次のコマンドを実行します。  
   openssl req -newkey rsa:4096 -nodes -keyout NPrinting.key -x509 -days 365 -out NPrinting.crt

   ここでは以下の内容となっています。

   * `req` は PKCS#10 証明書リクエストで、ユーティリティを生成します。
   * `-x509` オプションは、自己署名証明書を作成するよう `req` に伝えます。
   * `-days 365` オプションは、365 日間有効な証明書を指定します。

   インタラクティブな質問をスキップするには、`-subj` の後に、引用符で囲んだ自分のドメイン情報を使用します。

   例:

   `-subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=mywebsitedomain.com"`。

警告メモ秘密キーは誰にも公開されてはならないもので、証明機関に送信されてはなりません。バックアップを作成して、安全な場所に保存してください。

公開キー ファイルを配布できます。

## 証明機関からの証明書の購入

お使いのウェブ サーバーにウェブ ブラウザーを介してパブリックにアクセス可能な場合に、セキュリティ警告が表示されるのを回避する必要がある場合は、証明機関 (CA) によって証明書に署名をしてもらう必要があります。証明機関は多数あります。選択する CA は、それぞれに固有の指示に従うよう求めます。CA 署名入り証明書の生成および実装の一部のステップは、すべての証明機関で共通しています。以下のセクションでは、これらの共通ステップの概要を説明します。

### 証明書署名リクエストの生成

CA 署名入り証明書を入手するには、証明書署名リクエスト (CSR) を生成する必要があります。CSR にはユーザーの公開キーと他の追加情報が含まれています。この情報は署名入り証明書に含まれることになります。CSR に秘密キーが含まれることはありません。

以下を実行します。

1. CSR および秘密キーを生成するには、次のコマンドを実行します。

   openssl req -new -newkey rsa:4096 -nodes -keyout NPrinting.key -out NPrinting.csr

2. プロンプトが表示され、インタラクティブな質問に回答するよう求められます。  
   インタラクティブな質問をスキップするには、`-subj` の後に、引用符で囲んだ自分のドメイン情報を使用します。

   例:

   `-subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=mywebsitedomain.com"`。

CSR の作成に必要なカスタム プロシージャについては、証明機関の指示を参照してください。

#### コモン ネーム フィールド

コモン ネーム フィールド (CN) 内の名前は、証明書を使用するホストの完全修飾ドメイン名 (FQDN) とする必要があります。

例:

* お使いの NewsStand の URL が https://会社名.com:4994 の場合、FQND は 会社名.com です (ポートは FQDN の部分ではありません)。
* URL https://www.会社名.com:4994 は https://会社名.com:4994 と異なると見なされます。両方の URL アドレスを有効なホスト名としたい場合は、証明書を 2 つ生成する必要があり、1 つには FQDN www.会社名.com を含め、もう 1 つには FQDN 会社名.com を含めます。

### 署名済み証明書とサーバー証明書の結合

証明機関 (CA) によって署名された証明書を使用している場合、以下を含む PEM ファイル証明書バンドルを作成する必要があります。

* サーバー証明書

* 中間証明書

* CA 署名入り証明書

連結では必ず以下の順序を適用します。

1. ドメイン証明書
2. 中間証明書 (1 つまたは複数)
3. ルート証明書

証明書バンドルを作成したら、秘密キーと併せて使用してプロキシを設定します。証明書、およびサーバーと一致する秘密キーが含まれているファイルが必要です。

以下を実行します。

この例では、ドメイン証明書は NPrinting.crt です。

1. Windows コマンド ラインを開き、次を入力します。

   more NPrinting.crt &gt;&gt; NPrinting.public.pem   
   more RSADomainValidationSecureServerCA.crt &gt;&gt; NPrinting.public.pem   
   more RSAAddTrustCA.crt &gt;&gt; NPrinting.public.pem   
   more AddTrustExternalCARoot.crt &gt;&gt; NPrinting.public.pem

   ここでは以下の内容となっています。

   * `NPrinting.crt` はドメイン証明書です。
   * `NPrinting.public.pem` はプロキシの設定に使用される証明書バンドルです。
   * `RSADomainValidationSecureServerCA.crt` および RSAAddTrustCA.crt は中間証明書です。
   * `AddTrustExternalCARoot.crt` はルート証明書です。

2. NPrinting.public.pem を証明書ファイルとして使用し、秘密キーを使用してプロキシを設定します。

## 詳細を見る

* [Qlik NPrinting ウェブ コンソール と NewsStand で使用する .pfx 証明書の設定方法](https://community.qlik.com/t5/Knowledge/How-to-configure-a-pfx-certificate-for-use-with-NPrinting-Web/ta-p/1711079) (英語のみ)