如何在 CentOS 8 上创建本地自签名 SSL 证书
SSL(安全套接字层)及其改进版本TLS(传输套接字层)都是安全协议用于保护从客户端 Web 浏览器发送到 Web 服务器的 Web 流量。
SSL 证书是一种数字证书,可在客户端浏览器和 Web 服务器之间创建安全通道。这样,敏感和机密数据(例如信用卡数据、登录凭据和其他高度私密的信息)就会被加密,从而防止黑客窃听和窃取您的信息。
什么是自签名 SSL 证书?
自签名 SSL 证书与由证书颁发机构 (CA) 签名和信任的其他 SSL 证书不同,它是由拥有它的个人。
创建它是完全免费的,并且是加密本地托管 Web 服务器的一种廉价方法。但是,由于以下原因,强烈建议不要在生产环境中使用自签名 SSL 证书:
- 由于它不是由证书颁发机构签名的,因此自签名 SSL 证书会在网络浏览器上生成警报,警告用户如果决定继续操作,可能面临潜在风险。这些警报是不需要的,并且会阻止用户访问您的网站,从而可能导致网络流量下降。作为这些警报的解决方法,组织通常鼓励员工忽略警报并继续操作。这可能会在用户中养成危险的习惯,他们可能决定继续忽略其他在线网站上的这些警报,从而可能成为网络钓鱼网站的受害者。
- 自签名证书的安全级别较低,因为它们实现了低级别的密码技术和哈希。因此,安全级别可能无法与标准安全策略相提并论。
- 此外,不支持公钥基础设施 (PKI) 功能。
也就是说,对于在需要 TLS/SSL 加密的本地计算机上测试服务和应用程序来说,使用自签名 SSL 证书并不是一个坏主意。
在本指南中,您将了解如何在 CentOS 8 服务器系统上的 Apache 本地 Web 服务器上安装本地自签名 SSL 证书。
先决条件:
在开始之前,请确保您满足以下基本要求:
- CentOS 8 服务器的实例。
- 服务器上安装了 Apache Web 服务器
- 已在 /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 证书。