Apache HTTP Server是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性。被广泛使用,是最流行的Web服务器软件之一。那么今天我要给大家翻译的一个教程就是有关在Apache网页服务器上创建SSL证书。
如果你想继续往下阅读,请你服务器满足一下条件:(若不满足可以作为一个参考)
1.使用的是 CentOS 7服务器系统
2.使用Apache作为网页服务器
3.你需要具有sudo权限的非root用户
先来介绍一下:
TLS或“传输层安全性”以及其前身SSL(代表“安全套接字层”)是用于将受保护的加密包装器中的正常流量包装的Web协议。使用这种技术,服务器可以在服务器和客户端之间安全地发送流量,而不用担心消息将被外部方拦截和读取。证书系统还帮助用户验证他们正在连接的站点的身份。
注意:自签名证书将加密服务器与任何客户端之间的通信。但是,由于Web浏览器附带的任何受信任的证书颁发机构未签名,因此用户无法使用证书自动验证服务器的身份。如果您没有与服务器相关联的域名以及加密的Web界面不是面向用户的实例,则自签名证书可能是适当的。如果您有域名,在许多情况下最好使用CA签发的证书。您可以在这里找到我们的“加密”项目,了解如何设置一个免费的受信任的证书。
您还需要安装Apache才能为其配置虚拟主机。如果还没有这样做,可以使用yum通过CentOS的默认软件仓库安装Apache:
sudo yum install httpd
接下来,启用Apache作为CentOS服务,以便在重新启动后自动启动:
sudo systemctl enable httpd.service
完成这些步骤后,您可以通过SSH作为非root用户帐户登录,并继续执行本教程。
为了设置自签名证书,我们首先必须确保为服务器安装了mod_ssl,一个提供SSL加密支持的Apache模块。我们可以使用yum命令安装mod_ssl:
sudo yum install mod_ssl
该模块将在安装过程中自动启用,Apache将在重新启动后能够开始使用SSL证书。您不需要为mod_ssl采取任何其他步骤即可使用。
现在Apache准备好使用加密,我们可以继续生成新的SSL证书。该证书将存储有关您的站点的一些基本信息,并附有一个密钥文件,允许服务器安全地处理加密数据。
首先,我们需要创建一个新的目录来存储我们的私钥(/etc/ssl/certs)
sudo mkdir /etc/ssl/private
由于保存在此目录中的文件必须严格保密,因此我们将修改权限,以确保只有root用户可以访问:
sudo chmod 700 /etc/ssl/private
现在我们有一个放置文件的位置,我们可以使用openssl创建SSL密钥和证书文件:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
输入请求后,您将被带到一个提示,您可以在其中输入有关您的网站的信息。在我们讨论之前,让我们来看看我们正在发布的命令中发生了什么:
openssl: 这是创建和管理OpenSSL证书,密钥和其他文件的基本命令行工具。
req -x509: 这指定我们要使用X.509证书签名请求(CSR)管理。 “X.509”是SSL和TLS坚持用于密钥和证书管理的公钥基础架构标准。
-nodes: 这告诉OpenSSL跳过使用密码保护证书的选项。当服务器启动时,我们需要Apache才能读取文件,无需用户干预。密码会阻止这种情况发生,因为每次重新启动后都必须输入密码。
-days 365: 此选项设置证书被认为有效的时间长度。我们在这里设置了一年。
-newkey rsa:2048: 这指定我们要同时生成新证书和新密钥。我们没有创建在上一步中签署证书所需的密钥,因此我们需要与证书一起创建。 Thersa:2048分配告诉它制作一个2048位长的RSA密钥。
-keyout: 该行告诉OpenSSL放置我们正在创建的生成的私钥文件。
-out: 这告诉OpenSSL放置我们正在创建的证书的位置。
恰当地填写提示。最重要的一行是请求公用名称。您需要输入要与服务器关联的域名。如果您没有域名,则可以输入公网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
您创建的两个文件将被放置在/ etc / ssl目录的相应子目录中。当我们使用OpenSSL时,我们还应该创建一个强大的Diffie-Hellman组,用于与客户协商完美转发保密。我们可以输入以下内容:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
这可能需要几分钟的时间,但完成后,您将在/etc/ssl/certs/dhparam.pem拥有强大的DH组,我们可以在配置中使用。
由于CentOS 7附带的Apache版本不包含SSLOpenSSLConfCmd指令,所以我们必须手动将生成的文件附加到我们的自签名证书的末尾。为此,请键入:
cat /etc/ssl/certs/dhparam.pem | sudo tee -a /etc/ssl/certs/apache-selfsigned.crt
apache-selfsigned.crt文件应该同时具有证书和生成的Diffie-Hellman组。
接下来我们来设置证书:
使用root权限在文本编辑器中打开Apache的SSL配置文件:
sudo vi /etc/httpd/conf.d/ssl.conf
找到以<VirtualHost _default_:443>开头的部分。我们需要在此进行一些修改,以确保我们的SSL证书正确应用于我们的网站。
调整VirtualHost指令:
首先,取消对DocumentRoot行的注释,并将引号中的地址编辑到站点文档根目录的位置。默认情况下,这将在/ var / www / html中,如果您没有更改网站的文档根,则不需要更改此行。但是,如果遵循像Apache虚拟主机设置指南一样的指南,您的站点的文档根可能不同。接下来,取消对ServerName行的注释,并将www.example.com替换为您的域名或服务器IP地址(无论您将其作为您的证书中的常用名称):
(未完继续)原文链接:https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-apache-for-centos-7 (英文)
推荐文章:https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-centos-7 (英文)
推荐网站:http://tli-tli.com/