使用 ACF 生成 SSL 证书
您需要为服务器或远程人员创建证书。您可能需要一个 SSL 证书用于运行 lighttpd 或 mini_httpd 的 Web 服务器。您可以使用像 OpenVPN 或 racoon 这样的工具用于您的 VPN 服务。如果有一种方法可以管理和查看您已向所有人发放的所有证书,岂不是很棒?吊销证书?在颁发证书之前审查证书?Alpine 通过 ACF 提供了一个不错的 Web 界面来完成这类工作……
安装过程
这将指导您完成创建此类服务器的过程。建议不要在您的 VPN 网关上托管此服务器,而是使用另一台机器来生成您的证书。
安装 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