如何创建CentOS 7 Apache的SSL证书

使用SSL加密网站的信息,并创建一个更安全的连接网络协议。证书系统还帮助用户在核实它们与连接位点的身份。在本指南中,我们将告诉你如何建立与Apache Web服务器使用自签名的SSL证书上一个CentOS 7 VPS。

介绍

TLS或“传输层安全性”,它的前身SSL,它的全称是“安全套接字层”,是Web协议用来包裹在一个受保护,加密封装正常通行。 使用此技术,服务器可以在服务器和客户端之间安全地发送流量,而不用担心消息将被外部方拦截和读取。 证书系统还帮助用户验证他们正在连接的站点的身份。

在本指南中,我们将向您展示如何设置自签名SSL证书,以便在CentOS 7 VPS上与Apache Web服务器配合使用。 自签名证书不会验证您的服务器的身份,因为它不是由受信任的证书颁发机构签名的,但它将允许您加密服务器和访问者之间的通信。

先决条件

在开始使用本指南之前,需要先完成几个步骤。

您将需要访问一个CentOS 7服务器,有一个非root用户sudo权限。 如果你还没有这个配置是,您可以通过运行CentOS 7初始服务器设置向导来创建此帐户。

您还需要安装Apache以便为其配置虚拟主机。 如果你还没有这样做的话,你可以使用yum通过CentOS的默认软件仓库安装Apache:

sudo yum install httpd

接下来,启用Apache作为CentOS服务,以便它将在重新启动后自动启动:

sudo systemctl enable httpd.service

完成这些步骤后,您可以通过SSH作为非root用户帐户登录,然后继续本教程。

第一步 - 安装Mod SSL

为了建立自签名证书,我们首先要确保mod_ssl ,Apache模块,它提供了支持SSL加密,安装在我们的VPS。 我们可以安装mod_sslyum命令:

sudo yum install mod_ssl

该模块将在安装期间自动启用,Apache将能够在重新启动后开始使用SSL证书。 您不必采取任何其他步骤mod_ssl是准备使用。

第二步 - 创建新证书

现在Apache已准备好使用加密,我们可以继续生成新的SSL证书。 该证书将存储有关您网站的一些基本信息,并且将伴有允许服务器安全处理加密数据的密钥文件。

首先,我们需要创建一个新目录,我们将存储服务器密钥和证书:

sudo mkdir /etc/httpd/ssl

现在,我们必须把我们的文件的位置,我们可以创建一个SSL密钥和证书文件openssl

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt

输入请求后,系统会显示一个提示,您可以在其中输入有关您网站的信息。 在我们讨论之前,让我们来看看我们发出的命令发生了什么:

  • OpenSSL的 :这是用于创建和管理OpenSSL的证书,密钥和其他文件的基本命令行工具。
  • REQ -x509:指定我们要使用X.509证书签名请求(CSR)的管理。 “X.509”是SSL和TLS遵守的用于密钥和证书管理的公钥基础结构标准。
  • -nodes:这告诉OpenSSL的跳到使用密码保护我们的证书的选项。 我们需要Apache能够在服务器启动时读取文件,无需用户干预。 口令将防止这种情况发生,因为我们必须在每次重新启动后输入。
  • -days 365:此选项设置的证书将被视为有效的时间长度。 我们在这里设置了一年。
  • -newkey RSA:2048:指定我们要生成新的证书,并在同一时间一个新的密钥。 我们没有创建在上一步中签署证书所需的密钥,因此我们需要与证书一起创建。 rsa:2048部分告诉它做的RSA密钥是2048位。
  • -keyout:这行告诉OpenSSL的在什么地方,我们正在创建的生成私钥文件。
  • 退房手续 :这告诉OpenSSL的在什么地方,我们正在创建的证书。

适当填写提示。 最重要的线是要求一个Common Name 您需要输入要与服务器关联的域名。 如果您没有域名,可以输入公共IP地址。

提示的完整列表将如下所示:

Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Example
Locality Name (eg, city) [Default City]:Example 
Organization Name (eg, company) [Default Company Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Example Dept
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:webmaster@example.com

第三步 - 设置证书

我们现在拥有完成的接口的所有必需的组件。 接下来要做的是设置虚拟主机以显示新证书。

使用root权限在文本编辑器中打开Apache的SSL配置文件:

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

找到开头的部分<VirtualHost _default_:443> 我们需要在这里进行一些更改,以确保我们的SSL证书正确应用于我们的网站。

首先,取消DocumentRoot线和编辑引用地址到你的网站的文档根目录的位置。 默认情况下,这将是/var/www/html ,而你并不需要改变这一行,如果你没有改变的文档根目录您的网站。 但是,如果您是喜欢我们的指南的Apache虚拟主机设置指南 ,您的网站的文档根目录可能会有所不同。

DocumentRoot "/var/www/example.com/public_html"

其次,取消ServerName行和替换www.example.com与您的域名或服务器的IP地址(哪一个你的证书中把作为通用名):

 ServerName www.example.com:443

找到SSLCertificateFileSSLCertificateKeyFile行并将其更改为我们在制作目录/etc/httpd/ssl

SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key

完成这些更改后,可以保存并关闭文件。

第四步 - 激活证书

现在,您已创建SSL证书,并将您的Web服务器配置为将其应用到您的网站。 要应用所有这些更改并开始使用SSL加密,您可以重新启动Apache服务器以重新加载其配置和模块:

sudo apachectl restart

在Web浏览器,尝试访问您的域名或IP与https://看到你的行动新证书。

https://example.com/

您的网络浏览器可能会警告您网站的安全证书不受信任。 由于您的证书未由浏览器信任的证书颁发机构签名,因此浏览器无法验证您尝试连接的服务器的身份。 我们创建了自签名证书而不是受信任的CA签名证书,因此这是完全有道理的。

在您为浏览器的身份验证添加例外后,您就可以继续访问您的新安全网站。

结论

您已将Apache服务器配置为处理HTTP和HTTPS请求。 这将有助于您安全地与客户沟通,避免外部人士阅读您的流量。

如果您计划在公共网站上使用SSL,则应该从可信的证书颁发机构购买SSL证书,以防止向每个访问者显示可怕的警告。