# 管理密钥和证书

Qlik NPrinting 加密需要 PEM 格式的 X.509 证书文件。您可生成自签名的证书，或者通过证书颁发机构 (CA) 进行签名。单个证书同时涵盖 NewsStand 和 Qlik NPrinting web 控制台，因为它们具有相同的域名。

## 限制

* 使用兼容 CNG 的算法生成的证书和 On-Demand 插件不兼容。

## 生成 PEM 格式的公开和私密 RSA 密钥对

进行以下操作：

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 全天候操作。这表明私钥必须存储在未加密的文件系统上。用密码来保护私钥不可行，因为每次服务重启时管理员都必须输入密码。您可通过仅将访问权限赋予管理员来保护私钥文件。私钥文件都仅用于 TLS，永远不会脱离服务器。

## 生成自签名证书

自签名证书是一种身份证书，由拥有证书的实体签名。该实体使用其自己的私钥来认证其身份。使用自签名证书可让您自己签署自己的证书。

您可在以下情况下使用自签名证书：

* 您希望使用 HTTPS（HTTP上的TLS）来保护自己的 Web 服务器。
* 您不需要由证书颁发机构 (CA) 签署您的证书。

例如，如果您的 Web 服务器仅在您的局域网内使用，则您可使用自签名证书。

进行以下操作：

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"`。

警告注释不应向任何人披露私钥，也不应将其发送给证书颁发机构。将其备份并存放在安全位置。

您可散布公钥文件。

## 从证书颁发机构购买证书

如果在您的 Web 服务器可经由 Web 浏览器公开访问的情况下，您需要避免安全警告，则您的证书必须由证书颁发机构 (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://yourcompany.com:4994，则 FQND 为 yourcompany.com（端口不属于 FQND 的一部分）。
* URL https://www.yourcompany.com:4994 被视为不同于 https://yourcompany.com:4994。如果您希望 URL 地址成为有效的主机名，则必须生成两个证书，一个包含 FQDN www.yourcompany.com，一个包含 FQDN yourcompany.com。

### 将已签署的证书和服务器证书合并

在使用证书颁发机构 (CA) 签署的证书时，您必须创建包含以下项的 PEM 文件证书捆绑：

* 服务器证书

* 任何中间产物

* CA 签名的证书

对于串联，确保应用以下顺序：

1. 域证书
2. 中间证书（一个或多个）
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 web 控制台 和 NewsStand 一起使用的 .pfx 证书](https://community.qlik.com/t5/Knowledge/How-to-configure-a-pfx-certificate-for-use-with-NPrinting-Web/ta-p/1711079)