Docker 使用 easy-rsa 生成 SSL 证书

阅读时长 4 分钟读完

前言

在开发和部署 Web 服务时,SSL 证书是保证数据传输安全的重要方式之一。针对单个主机的 SSL 证书生成可以使用 easy-rsa 工具进行生成,但在部署到生产环境时,需要生成大量的 SSL 证书,此时手动处理是不可取的。

Docker 提供了一个方便的方式,将 easy-rsa 工具打包成镜像,并且借助 Docker 的容器特性进行 SSL 证书的批量生成。本文将介绍如何使用 Docker 和 easy-rsa 生成 SSL 证书。

概述

什么是 SSL 证书

SSL 证书是一种数字证书,用于加密在客户端和服务器之间传输的数据。一般由专业机构或自己颁发,用于保证数据传输的安全。

通常包括以下几个主要组成部分:

  1. 证书持有人的名称和信息;
  2. 出具证书的机构的名称和信息;
  3. SSL 证书的有效期;
  4. 证书的唯一序列号;
  5. 服务器公钥;
  6. 数字签名。

Easy-rsa 工具

Easy-rsa 是用于生成 SSL 证书的开源工具,主要是由 OpenVPN 社区开发。它是一组 shell 脚本,通过 OpenSSL 库来生成 SSL 证书。Easy-rsa 可以生成 CA(Certificate Authority),并使用根证书签署其他证书。

使用 Docker 和 Easy-rsa 生成 SSL 证书

环境准备

首先需要安装 Docker,如果还没有安装 Docker,可以按照 Docker 官方文档 进行安装。安装完成后,可以通过命令行运行以下命令进行版本验证:

创建 Docker 镜像

Easy-rsa 提供了官方的 Dockerfile,可以通过以下命令构建 Easy-rsa 镜像:

my-easyrsa 是自定义的镜像名称,可自行替换为自己的镜像名称。

生成 SSL 证书

初始化证书

首先,需要在 easy-rsa 镜像中初始化证书。在 easy-rsa/easyrsa3 目录中运行以下命令:

执行后,会进入 easy-rsa 容器的 shell,运行以下命令初始化证书:

生成 CA 证书

生成证书前,需要先生成 CA 证书,输入以下命令初始化 CA 证书:

该命令会生成根证书和私钥,并存储到 pki 目录中。生成的证书有效期可以根据需要进行配置。

生成服务器证书

在生成服务器证书时,需要指定证书名称,例如 example.com。输入以下命令生成服务器证书:

生成客户端证书

客户端证书可以分发给需要连接该服务器的用户,例如需要为某个用户生成证书时,可以输入以下命令:

该命令会为 client1.example.com 生成客户端证书。在客户端连接时,需要同时提供证书和私钥。

部署 SSL 证书

Easy-rsa 工具将生成的 SSL 证书存储在 pki 目录中。将该目录存储到需要使用 SSL 的服务中,比如可以将证书挂载到 Nginx 容器中:

总结

本文介绍了使用 Docker 和 Easy-rsa 工具生成 SSL 证书的方法。在生产环境下,存在大量的 SSL 证书需求,使用 Docker 可以方便地进行批量处理。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6466dd57968c7c53b0747d09

纠错
反馈