如何利用 Easy-RSA 软件在 Anolis OS8.8 操作系统上设置和配置证书颁发机构 (CA)

一、前言

最近做网站,看到网站老是提示不安全比较烦人,就想自已建立一个CA证书中心,来自己给自己颁发证书,网上找一找,果然给我发现了一篇好文,而且还有好几种操作系统的版本安装介绍,可惜是英文版的,为了让国内的广大读者也能阅读到,于是我就花费了一些时间,再结合我自已理解,把它翻译成中文,为的是想让更多的技术爱好者都能彻底理解CA证书的作用,现把它翻译出来供大家欣赏。
特别说明:原文本来是“如何在 CentOS 8 上设置和配置证书颁发机构 (CA)”,我是结合国家发展国内操作系统的需要,把它加以修改,改造成“如何在 Anolis OS8.8 操作系统上设置和配置证书颁发机构 (CA)”,也算是对Anolis OS8.8 的发展尽自已的一点微博之力吧。
原文参见:https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-a-certificate-authority-ca-on-centos-8#step-1-installing-easy-rsa
原作者: Jamon Camisso
在这里插入图片描述

二、介绍

证书颁发机构 (CA) 是负责颁发数字证书以验证 Internet 上的身份的实体。尽管公共 CA 是验证向公众提供的网站和其他服务身份的热门选择,但私有 CA 通常用于封闭组和专用服务。

建立专用证书颁发机构将使您能够配置、测试和运行需要客户端和服务器之间加密连接的程序。使用私有 CA,您可以为基础结构中的用户、服务器或单个程序和服务颁发证书。

Linux上使用自己的私有CA的程序的一些示例是 OpenVPN和 Puppet 。您还可以将 Web 服务器配置为使用私有 CA 颁发的证书,以使开发和暂存环境与使用 TLS 加密连接的生产服务器相匹配。

在本指南中,我们将学习如何在 Anolis OS8.8 服务器上设置私有证书颁发机构,以及如何使用新 CA 生成和签署测试证书。您还将了解如何将 CA 服务器的公共证书导入操作系统的证书存储中,以便验证 CA 与远程服务器或用户之间的信任链。最后,您将学习如何吊销证书和分发证书吊销列表,以确保只有授权用户和系统才能使用依赖于您的 CA 的服务。

三、基础设置(这里与原文先决条件不同)

要遵循本教程,你需要一台Anolis OS8.8 服务器,并启用一个非 root 用户,以及一个设置了 .你可以按照我们的Anolis OS8.8 的初始服务器设置指南来完成该设置。
在本教程中,此服务器将称为 CA 服务器。
确保 CA Server 是独立系统。它仅用于导入、签署和撤销证书请求。它不应运行任何其他服务,理想情况下,当您不主动使用 CA 时,它将处于脱机或完全关闭状态。
注意:如果您想了解如何签名和吊销证书,本教程的最后一部分是可选的。假如你选择完成这些练习步骤,你将需要第二台 client 服务器,或者你也可以使用你自己的本地 Linux 计算机运行 Anolis OS 8.8、Fedora 或 RedHat 衍生产品。
修改部分:
我在做这个实践前,首先做好了二台 Anolis OS8.8 KVM虚拟机,至于KVM虚拟机如何做?你可以参考我的前文“龙晰 Anolis OS 8.8 KVM 虚拟机的创建”。本次实践我的二个KVM虚拟机的主机名及IP地址如下:

server192.168.1.28
client192.168.1.29

从下图可以看出,我的原服务器安装的CentOS Stream 9,做了二台 KVM Anolis OS8.8 虚拟机。
在这里插入图片描述
虚拟机安装的操作系统为:Anolis OS8.8
在这里插入图片描述
注意:如果您想了解如何签名和吊销证书,本教程的最后一部分是可选的。假如你选择完成这些练习步骤,你将需要第二台 client 服务器,或者你也可以使用你自己的本地 Linux 计算机运行 Anolis OS8.8 、Fedora 或 RedHat 衍生产品。

四、服务端操作步骤

在Anolis OS8.8操作系统上设置和配置证书颁发机构,可以按照以下步骤进行操作:

第1步 — 下载 Easy-RSA软件

本教程中的第一个任务是下载安装证书颁发机构软件。
在github 上,下载最新的easy-rsa
① 到github上下载(https://github.com/OpenVPN/easy-rsa)安装包,不过这一点很多人做不到,github对国人不开放了。
② 到网址 https://mirrors.sjtug.sjtu.edu.cn/gentoo/app-crypt/easy-rsa/ 下载,这个是国内上海交大的下载源,下载的挺快的且能够下载。
③ 如果你想要最新版本,你也可以上传安装Easy-RSA软件,此处略。

第2步 — 安装 Easy-RSA软件

本教程中的第二个任务是在您的CA服务器上安装简单的rsa脚本集。easy-rsa是一个证书颁发机构管理工具,您将使用它来生成私钥和公共根证书,然后您将使用该证书对来自依赖您的CA的客户端和服务器的请求进行签名。
easy-rsa软件包默认情况下在centos8中不可用,因此您需要启用企业Linux(EPEL)存储库的额外软件包。EPEL由Fedora项目管理,包含Fedora、CentOS和其他使用RPM包格式的Linux发行版的非标准但流行的包。以您在初始设置步骤中创建的非root sudo用户身份登录到您的CA服务器,并运行以下操作:
(对系统进行升级)[anuser@server ~]$ dnf update
(下载安装源) [anuser@server ~]$ sudo dnf install epel-release
在这里插入图片描述
安装easy-rsa软件
[anuser@server ~]$ sudo dnf install easy-rsa
在这里插入图片描述
系统将提示您下载并安装该软件包。按下 y 以确认您要安装软件包。y
至此,您已经设置好了所需的一切,并准备好使用Easy-RSA。在下一步中,您将创建一个公钥基础结构,然后开始构建您的证书颁发机构。

第3步 — 准备公钥基础结构目录

1)创建目录

现在您已经安装了,是时候在 CA 服务器上创建框架公钥基础结构 (PKI) 了。确保您仍以非 root 用户身份登录并创建目录。请确保不要使用 sudo 运行以下任何命令,因为普通用户应该在没有提升权限的情况下管理 CA 并与之交互。
在这里插入图片描述

2)软件 easy-rsa 安装到那里?

查看软件 easy-rsa 安装在那里的目的是为下述的软链接作准备
在这里插入图片描述

3)创建软链接

这将在您的主文件夹中创建一个名为的新目录。我们将使用此目录创建指向在上一步中安装的包文件的符号链接。这些文件位于 CA 服务器上的文件夹中。

使用以下命令创建符号链接:ln
ln -s /usr/share/easy-rsa/3/* ~/easy-rsa/
注意:虽然其他指南可能会指导您将包文件复制到 PKI 目录中,但本教程采用符号链接方法。因此,对包的任何更新都将自动反映在 PKI 的脚本中。本人也认为这种方式比较好,方便记忆查看。
在这里插入图片描述
要限制对新 PKI 目录的访问,请确保只有所有者才能使用以下命令访问它:chmod
chmod 700 /home/anuser/easy-rsa
在这里插入图片描述

4)初始化

初始化目录内的 PKI:easy-rsa
[anuser@server ~]$ cd ~/easy-rsa
[anuser@server easy-rsa]$ ./easyrsa init-pki
在这里插入图片描述
(执行初始化命令是:./easyrsa init-pki 目的删除并重新初始化PKI目录,以获得一个干净的PKI。您新创建的 PKI 目录是:/home/anuser/easy-rsa/pki,后面要用到)
完成此部分后,您将拥有一个目录,其中包含创建证书颁发机构所需的所有文件。在下一节中,您将为 CA 创建私钥和公共证书。

第4步 — 创建证书颁发机构

1)使用 vim 编辑器

在创建 CA 的私钥和证书之前,您需要创建并使用一些默认值调用并填充该文件。首先,您将进入目录,然后您将使用您喜欢的文本编辑器创建和编辑文件。

Anolis OS8.8 附带的默认文本编辑器是 。 是一个非常强大的文本编辑器,但对于缺乏经验的用户来说,它可能有些迟钝。你可能希望安装一个更方便用户的编辑器,例如方便在 Anolis OS8.8 服务器上编辑配置文件:
$ dnf install vim -y
在这里插入图片描述
当系统提示您安装时,输入以继续执行安装步骤。现在,您可以编辑文件了:

2) 创建编辑文件 vars

在创建 CA 的私钥和证书之前,您需要创建一个名为“vars”的文件并使用一些默认值填充。首先,您将 cd 进入 easy-rsa 目录,然后使用 nano 或您喜欢的文本编辑器创建和编辑 vars 文件:
$ cd ~/easy-rsa
$ vim vars
打开文件后,粘贴以下行并编辑每个突出显示的值以反映你自己的组织信息。这里的重要部分是确保不要将任何值留空:

set_var EASYRSA_REQ_COUNTRY    "CN"
set_var EASYRSA_REQ_PROVINCE   "AnHui"
set_var EASYRSA_REQ_CITY       "HuaiNan"
set_var EASYRSA_REQ_ORG        "gadd.cn"
set_var EASYRSA_REQ_EMAIL      "ftzyj@sohu.com"
set_var EASYRSA_REQ_OU         "Community"
set_var EASYRSA_ALGO           "rsa"
set_var EASYRSA_DIGEST         "sha512"

完成后,保存并关闭文件,您现在已准备好构建您的 CA。

3) 使用下面命令为 CA 服务器生成根私钥对:

①如果你使用以下选项:./easy-rsabuild-ca

密钥对的密码。请务必选择一个强密码,并将其记在安全的地方。您需要在需要与 CA 交互时输入密码,例如签署或吊销证书。
在证书颁发机构上下文中引用此计算机的名称。您可以为 CA 的公用名输入任何字符串,但为简单起见,请按 Enter 接受默认名称。

Output
. . .
Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
. . .
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/sammy/easy-rsa/pki/ca.crt
②运行带有以下选项的命令,如下所示:build-ca nopass

[anuser@server easy-rsa]$ ./easyrsa build-ca nopass

[anuser@server easy-rsa]$ ./easyrsa build-ca nopass
Using SSL: openssl OpenSSL 1.1.1k  FIPS 25 Mar 2021
Generating RSA private key, 2048 bit long modulus (2 primes)
...........................+++++
...............................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:(注意:这里我是直接回车,使用默认值)

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/anuser/easy-rsa/pki/ca.crt

[anuser@server easy-rsa]$ 

您现在有两个重要文件(和),它们构成了证书颁发机构的公共和私有组件。
~/easy-rsa/pki/ca.crt
~/easy-rsa/pki/private/ca.key
ca.crt是 CA 的公共证书文件。用户、服务器和客户端将使用此证书来验证它们是否属于同一信任网络。使用您的 CA 的每个用户和服务器都需要拥有此文件的副本。所有各方都将依赖公共证书来确保有人不会冒充系统并执行中间人攻击。
ca.key是 CA 用于对服务器和客户端的证书进行签名的私钥。如果攻击者访问了您的 CA,进而访问了您的文件,您将需要销毁您的 CA。这就是为什么您的文件应该只在您的 CA 计算机上,并且理想情况下,在不签署证书请求时,您的 CA 计算机应该保持脱机状态,作为额外的安全措施。
这样,您的 CA 就位了,可以使用它来签署证书请求和吊销证书。

第5步 — 分发证书颁发机构的公共证书

1) 服务端生成 CA 的公共证书

现在,您的 CA 已配置完毕,可以充当您要配置为使用它的任何系统的信任根。您可以将 CA 的证书添加到 OpenVPN 服务器、Web 服务器、邮件服务器等。任何需要验证网络中其他用户或服务器身份的用户或服务器都应将该文件的副本导入到其操作系统的证书存储中。

2)将生成的证书导入客户端

若要将 CA 的公共证书导入到第二个 Linux 系统(如另一台服务器或本地计算机)中,请首先从 CA 服务器获取该文件的副本。您可以使用该命令在终端中输出证书,然后将其复制并粘贴到正在导入证书的第二台计算机上的文件中。您还可以使用 等工具在系统之间传输文件。但是,我们将在此步骤中使用复制和粘贴,因为它适用于所有系统。
以 CA Server 上的非 root 用户身份运行以下命令:
cat ~/easy-rsa/pki/ca.crt
在这里插入图片描述
您的终端中将有类似于以上内容的输出。
复制所有内容,包括 and 行和破折号。-----BEGIN CERTIFICATE----------END CERTIFICATE-----
在您的第二个 Linux 系统上–即Anolis OS8.8客户端 ,使用或您喜欢的文本编辑器打开一个名为:
[anuser@client ~]$ vim /tmp/ca.crt
在这里插入图片描述

五、客户端操作步骤

第1步 — 客户端安装 Easy-RSA 软件

第2步 — 导入证书到客户端

现在,您在第二个 Linux 系统上拥有该文件的副本,是时候将证书导入其操作系统证书存储中了。
在Anolis OS8.8客户端 、Fedora 或其他 RedHat 派生的 Linux 系统上,运行以下命令以导入证书:
在这里插入图片描述
在这里插入图片描述
要在基于 Debian 或 Ubuntu 的系统上导入 CA Server 的证书,请将文件内容复制并粘贴到系统上,就像上一个示例中名为 的文件中一样。接下来,将证书复制到 ,然后运行命令。/tmp/ca.crt/usr/local/share/ca-certificates/update-ca-certificates
在这里插入图片描述
现在,您的第二个 Linux 系统将信任 CA 服务器签名的任何证书。
注意:如果您将 CA 与 Web 服务器一起使用,并使用 Firefox 作为浏览器,则需要将公共证书直接导入 Firefox。Firefox 不使用本地操作系统的证书库。有关如何将 CA 证书添加到 Firefox 的详细信息,请参阅 Mozilla 关于在 Firefox 中设置证书颁发机构 (CA) 的支持文章。ca.crt
如果您使用 CA 与 Windows 环境或台式计算机集成,请参阅有关如何使用 CA 证书的文档。certutil.exe
如果您将本教程用作其他教程的先决条件,或者熟悉如何签署和吊销证书,则可以在此处停止。如果您想了解有关如何签名和吊销证书的更多信息,则以下可选部分将详细解释每个过程。
本文参见如下文章修改而来
https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-a-certificate-authority-ca-on-centos-8#step-1-installing-easy-rsa

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
easy-rsa-old-master.zip . ├── configure.ac ├── COPYING ├── COPYRIGHT.GPL ├── distro │   ├── Makefile.am │   └── rpm │   ├── easy-rsa.spec.in │   └── Makefile.am ├── doc │   ├── Makefile.am │   ├── README-1.0 │   └── README-2.0 ├── easy-rsa │   ├── 1.0 │   │   ├── build-ca │   │   ├── build-dh │   │   ├── build-inter │   │   ├── build-key │   │   ├── build-key-pass │   │   ├── build-key-pkcs12 │   │   ├── build-key-server │   │   ├── build-req │   │   ├── build-req-pass │   │   ├── clean-all │   │   ├── list-crl │   │   ├── make-crl │   │   ├── openssl.cnf │   │   ├── revoke-crt │   │   ├── revoke-full │   │   ├── sign-req │   │   └── vars │   ├── 2.0 │   │   ├── build-ca │   │   ├── build-dh │   │   ├── build-inter │   │   ├── build-key │   │   ├── build-key-pass │   │   ├── build-key-pkcs12 │   │   ├── build-key-server │   │   ├── build-req │   │   ├── build-req-pass │   │   ├── clean-all │   │   ├── inherit-inter │   │   ├── list-crl │   │   ├── openssl-0.9.6.cnf │   │   ├── openssl-0.9.8.cnf │   │   ├── openssl-1.0.0.cnf │   │   ├── pkitool │   │   ├── revoke-full │   │   ├── sign-req │   │   ├── vars │   │   └── whichopensslcnf │   └── Windows │   ├── build-ca.bat │   ├── build-ca-pass.bat │   ├── build-dh.bat │   ├── build-key.bat │   ├── build-key-pass.bat │   ├── build-key-pkcs12.bat │   ├── build-key-server.bat │   ├── build-key-server-pass.bat │   ├── clean-all.bat │   ├── index.txt.start │   ├── init-config.bat │   ├── README.txt │   ├── revoke-full.bat │   ├── serial.start │   └── vars.bat.sample └── Makefile.am

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔极客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值