如何安装Apache并使用Let’s Encrypt证书进行安全配置?
让我们学习如何安装Apache HTTP服务器,并使用Let's Encrypt证书进行保护。
介绍
Apache是最广泛使用的HTTP Web服务器之一。为您的Web应用程序设置Apache并使用SSL证书进行保护是您需要执行的第一步。
在本教程中,您将学习如何在Ubuntu和CentOS上为您的网站设置Apache。我在DigitalOcean VM上进行了测试。
为了演示目的,我将使用测试域名test.sanakil.xyz,它是supercharged by Cloudflare。
不要忘记将test.sanakil.xyz域名替换为您的实际域名。📢
创建DNS记录
登录到Cloudflare或您的域名注册商(如果不是Cloudflare)并创建一个A记录将域名指向云服务器的IP地址。
通过SSH登录您的云服务器。
安装Apache(Ubuntu)
将可用软件包更新到最新
sudo apt-get update
安装Apache
sudo apt-get install apache2
在防火墙中允许端口80和443用于HTTP服务器。
sudo ufw allow 'Apache Full'
检查您安装的Apache是否正常运行
sudo systemctl status apache2
安装Apache(CentOS)
将可用软件包更新到最新。
sudo yum update
安装Apache
sudo yum install httpd
在防火墙中添加端口80和443以访问Web应用程序。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
启动Apache并检查运行状态
sudo systemctl start httpd
sudo systemctl status httpd
为网站创建虚拟主机
根据我们要服务的Web应用程序/网站的类型,可以使用两种方式创建虚拟主机。
假设应用程序已经在端口上运行一个Web服务器,如Node。我们可以使用代理在Apache中提供它。或者如果应用程序只是提供像静态站点一样的文件,我们可以指定在Apache中提供的应用程序路径。
在Apache中创建虚拟主机文件-配置文件可以采用任何名称。但是,将其与我们将服务Web应用程序的域名一起保存会更好,以便于识别。
CentOS的其他设置
在CentOS(SELinux)中,默认情况下并不是所有内容都已启用,就像Ubuntu一样。
我们必须在Apache中创建sites-enabled和sites-available文件夹。
sites-enabled – 告诉Apache使用其中的conf文件为访问者提供服务
sites-available – 存储虚拟主机conf文件
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
现在告诉Apache读取sites-enabled文件夹中的conf文件。
sudo vi /etc/httpd/conf/httpd.conf
在文件末尾添加以下行
IncludeOptional sites-enabled/*.conf
配置Apache提供文件
- 创建用于提供Web应用程序的文件夹
sudo mkdir -p /var/www/test.sanakil.xyz/webapp
sudo vi /var/www/test.sanakil.xyz/webapp/index.html
- 粘贴以下HTML片段进行测试
Apache webapp
My Apache webapp is working in test.sanakil.xyz
- 创建一个用于生成和存储日志的文件夹
sudo mkdir -p /var/www/test.sanakil.xyz/log
sudo touch /var/www/test.sanakil.xyz/request.log
sudo touch /var/www/test.sanakil.xyz/log/error.log
- 打开配置文件(Ubuntu)
sudo vi /etc/apache2/sites-available/test.sanakil.xyz.conf
- 打开配置文件(CentOS)
sudo vi /etc/httpd/sites-available/test.sankil.xyz.conf
- 将以下配置片段粘贴到文件中,将你的域名修改为你的域名
ServerName test.sanakil.xyz
ServerAlias test.sanaki.xyz
DocumentRoot /var/www/test.sanakil.xyz/webapp
ErrorLog /var/www/test.sankil.xyz/log/error.log
CustomLog /var/www/test.sanakil.xyz/log/requests.log combined
- 为文件夹赋予所需的权限。
sudo chown -R $USER:$USER /var/www/test.sanakil.xyz
sudo chmod -R 755 /var/www/test.sanakil.xyz
在apache中启用您的虚拟主机配置文件(Ubuntu)
sudo a2ensite test.sanakil.xyz.conf
出于安全原因,禁用默认的conf文件。
sudo a2dissite 000-default.conf
重新启动apache以使更改生效。
sudo systemctl restart apache2
在apache中启用您的虚拟主机配置文件(CentOS)
为apache创建符号链接
sudo ln -s /etc/httpd/sites-available/test.sanakil.xyz.conf
/etc/httpd/sites-enabled/test.sanakil.xyz.conf
重新启动apache以使更改生效。
sudo systemctl restart httpd
启用HTTPS
在Ubuntu中,通过使用certbot 和Let's Encrypt,启用apache web服务器中的HTTPS变得很容易。
Let’s Encrypt是一个非营利组织,为数百万个网站提供免费的SSL证书。
Certbot是一款软件,它将使用Let's Encrypt为我们的网站自动设置HTTPS。
添加并安装apache的certbot(Ubuntu)
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-apache
添加并安装apache的certbot(CentOS)
sudo yum install epel-release
sudo yum install certbot python2-certbot-apache mod_ssl
获取SSL证书
sudo certbot --apache -d your-domain-name
如果certbot在没有任何问题的情况下完成了所有验证。
它将要求进行HTTPS重定向。选择选项2并输入。
就是这样。
如果一切都正常工作,https://test.sanakil.xyz将显示我们创建的基本HTML索引页面。
结论
我希望这给您关于在Apache上安装和实施SSL证书的一个想法。
接下来,了解如何implement a certificate in Nginx。