使用 ACF 生成 SSL 证书

来自 Alpine Linux

您需要为服务器或远程人员创建证书。您可能需要一个 SSL 证书用于运行 lighttpd 或 mini_httpd 的 Web 服务器。您可以使用像 OpenVPN 或 racoon 这样的工具用于您的 VPN 服务。如果有一种方法可以管理和查看您已向所有人发放的所有证书,岂不是很棒?吊销证书?在颁发证书之前审查证书?Alpine 通过 ACF 提供了一个不错的 Web 界面来完成这类工作……

安装过程

这将指导您完成创建此类服务器的过程。建议不要在您的 VPN 网关上托管此服务器,而是使用另一台机器来生成您的证书。

安装 Alpine

以下链接是指向标准文档的链接。

Installing_Alpine

安装和配置 ACF

运行以下命令:这将安装 Alpine Linux 的 Web 前端,称为 ACF。

/sbin/setup-acf

安装 acf-openssl

apk add acf-openssl

浏览到您的计算机 https://ipaddr/

以 root 身份登录。

点击“用户管理”选项卡并创建一个账户。

Acf-openssl

从左侧导航栏的“应用程序”部分下,点击“证书颁发机构”链接。

如果您已经有一个想要通过 Web 界面管理的 CA,您可以从“状态”页面上传它(作为 pfx 文件)。

从“状态”选项卡中,点击“配置”(以删除大多数错误消息)。

如果您没有 CA,要生成新证书:点击“编辑默认值”选项卡。输入 CA 和从中生成的任何其他证书所需的项目,然后点击“保存”。点击“状态”选项卡。在输入框中输入值以生成 CA,然后点击“生成”。

使用 ACF 生成证书

请求表单

提供的字段

  • 国家名称(两位字母缩写)
  • 地区名称(例如,城市)
  • 组织名称
  • 通用名称(例如,证书 CN)
  • 电子邮件地址
  • 多个组织单元名称(例如,部门)
  • 证书类型

已预留一个框用于添加其他 x509 扩展,格式与您直接在 openssl.cnf 中填写部分相同。部分将是[v3_req]

您可以插入

  • subjectAltName ="IP:192.168.1.1"
  • subjectAltName ="DNS:192.168.1.10"

这里也是您指定 CRL / OCSP 分发点的位置,客户端可以从那里查询信息

  • crlDistributionPoints=URI:http://example.com/example.crl

填写完表单并输入密码后,点击“提交”。

查看

在提交请求表单后,转到“查看”选项卡。“查看”选项卡将显示待处理的证书请求。此选项卡还提供已批准的请求(已生成的证书)、已吊销的证书和 CRL。

对于待处理的请求,请务必在批准之前查看证书。验证没有错误后,批准请求。

生成的文件可以从 ACF 下载。使用以下命令行将 pkcs12 文件解压成各个部分以开始使用。

提取 PFX 证书

获取 CA 证书

openssl pkcs12 -in PFXFILE -cacerts -nokeys -out cacert.pem

获取私钥

openssl pkcs12 -in PFXFILE -nocerts -nodes -out mykey.pem

由于此文件包含没有密码保护的密钥,请务必对此文件设置严格的权限。

获取证书

openssl pkcs12 -in PFXFILE -nokeys -clcerts -out mycert.pem

在单个文件中获取证书和私钥(例如,用于 lighttpd 或 mini_httpd)

openssl pkcs12 -in PFXFILE -nodes -out server.pem

由于此文件包含没有密码保护的密钥,请务必对此文件设置严格的权限。

获取 CA 链(例如,用于 lighttpd)

openssl pkcs12 -in PFXFILE -nokeys -cacerts -chain -out ca-certs.pem

显示可读/文本格式的证书或密钥

openssl x509 -in mycert.pem -noout -text

示例

替换 ACF SSL 证书

默认情况下,setup-acf 使用带有自签名证书的 mini_httpd 来提供 ACF 网页。我们可以将自签名证书替换为由我们新的 CA 签名的证书。

创建类型为“ssl_server_cert”且具有适当设置的证书(即,通用名称 = 服务器名称)

下载证书 pfx 文件并将其上传到 ACF 服务器(请记住,这通常与独立的证书颁发机构服务器分开)

替换 mini_httpd 服务器证书

openssl pkcs12 -in PFXFILE -nodes -out /etc/ssl/mini_httpd/server.pem

重启 mini_httpd

rc-service mini_httpd restart

为 OpenVPN 生成服务器和客户端证书

对于 OpenVPN 使用,我们需要一个服务器证书和每个用户的客户端证书。ACF 可用于生成所有这些证书,包括允许用户请求自己的客户端证书。

生成类型为“ssl_server_cert”且具有 OpenVPN 服务器适当设置的证书。

将服务器证书 pfx 复制到 OpenVPN 服务器,并使用上面的命令提取证书。OpenVPN 服务器的配置不在此处讨论范围之内。

在证书颁发机构服务器上为每个 OpenVPN 用户创建一个 ACF 用户帐户。从导航栏中,点击“系统”下的“用户管理”。点击“创建”。为每个用户创建一个具有 CERT_REQUESTER 角色的用户。您可以将用户主目录设置为 /openssl/openssl/read 以默认显示该用户的证书。

每个用户都可以请求自己的客户端证书。以新用户身份登录。为类型为“ssl_client_cert”且具有适当设置的证书创建证书请求。

您可以按照上述说明查看和批准请求的证书。

用户可以在其 OpenVPN 客户端上下载并安装客户端证书 pfx 文件。同样,这超出了本文档的范围。

附加内容

OpenSSL 命令行创建您的 CA

以下命令将需要密码。请务必记住它。

openssl genrsa -des3 -out server.key 2048

openssl req -new -key server.key -out server.csr

openssl rsa -in server.key. -out server.pem

openssl x509 -req -days 365 -in server.csr -signkey server.pem -out cacert.pem

mv server.pem /etc/ssl/private; mv cacert.pem /etc/ssl/

编辑 /etc/ssl/openssl-ca-acf.cnf

通过 ACF 上的专家选项卡,编辑 openssl-ca-acf.cnf 文件。可以添加诸如 subjectAltName 之类的项目,以供您生成的证书使用。

3.subjectAltName = 分配的 IP 地址

3.subjectAltName_default = 192.168.1.1/32