网站搜索

如何在 CentOS 8 上创建本地自签名 SSL 证书


SSL安全套接字层)及其改进版本TLS传输套接字层)都是安全协议用于保护从客户端 Web 浏览器发送到 Web 服务器的 Web 流量。

SSL 证书是一种数字证书,可在客户端浏览器和 Web 服务器之间创建安全通道。这样,敏感和机密数据(例如信用卡数据、登录凭据和其他高度私密的信息)就会被加密,从而防止黑客窃听和窃取您的信息。

什么是自签名 SSL 证书?

自签名 SSL 证书与由证书颁发机构 (CA) 签名和信任的其他 SSL 证书不同,它是由拥有它的个人。

创建它是完全免费的,并且是加密本地托管 Web 服务器的一种廉价方法。但是,由于以下原因,强烈建议不要在生产环境中使用自签名 SSL 证书:

  1. 由于它不是由证书颁发机构签名的,因此自签名 SSL 证书会在网络浏览器上生成警报,警告用户如果决定继续操作,可能面临潜在风险。这些警报是不需要的,并且会阻止用户访问您的网站,从而可能导致网络流量下降。作为这些警报的解决方法,组织通常鼓励员工忽略警报并继续操作。这可能会在用户中养成危险的习惯,他们可能决定继续忽略其他在线网站上的这些警报,从而可能成为网络钓鱼网站的受害者。
  2. 自签名证书的安全级别较低,因为它们实现了低级别的密码技术和哈希。因此,安全级别可能无法与标准安全策略相提并论。
  3. 此外,不支持公钥基础设施 (PKI) 功能。

也就是说,对于在需要 TLS/SSL 加密的本地计算机上测试服务和应用程序来说,使用自签名 SSL 证书并不是一个坏主意。

在本指南中,您将了解如何在 CentOS 8 服务器系统上的 Apache 本地 Web 服务器上安装本地自签名 SSL 证书。

先决条件:

在开始之前,请确保您满足以下基本要求:

  1. CentOS 8 服务器的实例。
  2. 服务器上安装了 Apache Web 服务器
  3. 已在 /etc/hosts 文件中配置和定义的主机名。在本指南中,我们将使用 howtoing.local 作为我们服务器的主机名。

步骤1:在CentOS上安装Mod_SSL

1. 首先,您需要验证 Apache Web 服务器是否已安装并正在运行。

sudo systemctl status httpd

这是预期的输出。

如果网络服务器未运行,您可以使用命令在启动时启动并启用它。

sudo systemctl start httpd
sudo systemctl enable httpd

此后您可以确认 Apache 是否已启动并正在运行。

2. 要启用本地自签名 SSL 证书的安装和设置,需要 mod_ssl 软件包。

sudo dnf install mod_ssl

安装后,您可以通过运行来验证其安装。

sudo rpm -q mod_ssl

另外,请确保安装了 OpenSSL 软件包(CentOS 8 中默认安装了 OpenSSL)。

sudo rpm -q openssl 

步骤 2:为 Apache 创建本地自签名 SSL 证书

3. 在检查了 Apache Web 服务器和所有先决条件后,您需要创建一个用于存储加密密钥的目录。

在此示例中,我们在 /etc/ssl/private 处创建了一个目录。

sudo mkdir -p /etc/ssl/private

现在使用以下命令创建本地 SSL 证书密钥和文件:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

让我们看看命令中的一些选项实际代表什么:

  • req -x509 – 这表明我们正在使用 x509 证书签名请求 (CSR)。
  • -nodes – 此选项指示 OpenSSL 跳过使用密码加密 SSL 证书。这里的想法是允许 Apache 能够在没有任何类型的用户干预的情况下读取文件,如果提供密码短语,则这是不可能的。
  • -newkey rsa:2048 – 这表明我们要同时创建一个新密钥和一个新证书。 rsa:2048 部分意味着我们要创建一个 2048 位 RSA 密钥。
  • -keyout – 此选项指定在创建时存储生成的私钥文件的位置。
  • -out – 该选项指定放置创建的 SSL 证书的位置。

步骤 3:在 Apache 上安装本地自签名 SSL 证书

4. 生成 SSL 证书文件后,现在可以使用 Apache Web 服务器的设置来安装证书了。打开并编辑 /etc/httpd/conf.d/ssl.conf 配置文件。

sudo vi /etc/httpd/conf.d/ssl.conf

确保虚拟主机标记之间有以下行。

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

保存并退出文件。要使更改生效,请使用以下命令重新启动 Apache:

sudo systemctl restart httpd

5.对于外部用户访问您的服务器,您需要通过防火墙打开端口443,如图所示。

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

步骤 3:在 Apache 上测试本地自签名 SSL 证书

所有配置完成后,启动浏览器并使用服务器的 IP 地址或使用 https 协议的域名浏览服务器的地址。

为了简化测试,您可以考虑将 Apache Web 服务器上的 HTTP 协议重定向到 HTTPS。这样,每当您使用纯 HTTP 浏览域时,它都会自动重定向到 HTTPS 协议。

所以浏览你的服务器的域名或IP

https://domain_name/

您将收到一条警报,通知您连接不安全,如图所示。这会因浏览器的不同而有所不同。正如您可能猜到的,该警报是由于 SSL 证书未由证书颁发机构签名,并且浏览器注册了该证书并报告该证书不可信。

要继续访问您的网站,请单击“高级”选项卡,如上所示:

接下来,将例外添加到浏览器。

最后,重新加载浏览器并观察到您现在可以访问服务器,尽管 URL 栏上会出现警告,表明该站点不完全安全,原因与 SSL 证书是自签名的而不是由 SSL 证书签名的原因相同。证书颁发机构。

我们希望您现在可以继续在 CentOS 8 上的 Apache localhost Web 服务器上创建并安装自签名 SSL 证书。