介绍
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_ssl
与yum
命令:
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
找到SSLCertificateFile
和SSLCertificateKeyFile
行并将其更改为我们在制作目录/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证书,以防止向每个访问者显示可怕的警告。