如何在Apache和Nginx中实施ZeroSSL证书?
让我们来看看如何从ZeroSSL获取一个免费的SSL/TLS证书,并将其在Apache和Nginx Web服务器上实现。
介绍
你可能听说过很多关于HTTP和HTTPS这些术语。早期定义了一个名为超文本传输协议(HTTP)的协议,它是一种从浏览器到Web服务器的通信方式。当这种通信发生时,通过HTTP协议传输的数据以明文格式传输。由于这个原因,人们意识到HTTP通信是不安全的,黑客能够攻击和拦截重要和敏感的信息。
为了解决这个问题,HTTPS协议应运而生。它是一种安全协议,缩写代表超文本传输协议安全。当通信发生时,它简单地对数据进行加密,并在数据从链接_0发送到Web服务器时进行。因此,如果任何黑客获取了这些信息,它们都是加密的。
HTTPS是如何工作的?
HTTPS协议使用SSL(Secure Socket Layer)或TLS(Transport Layer Security)中的任何一种工作。这两种工具都使用PKI(公钥基础设施)。PKI使用两个密钥,即公钥和私钥。使用公钥加密的任何内容都可以使用私钥解密,反之亦然。
当我们在网站上安装一个链接_1时,'数据加密'功能就被启用了。SSL用作检查点,以确保在用户的浏览器和网站服务器之间通过互联网交换的数据的安全性。
获取ZeroSSL证书
ZeroSSL是一个证书颁发机构(CA),使每个人都能够轻松安装证书以使网站更安全。您可以免费获取90天有效期的3个证书。
- 在ZeroSSL注册
- 登录后,将显示下面的页面。点击“新建证书”。
- 输入要保护的URL,然后点击“下一步”。
- 选择90天的证书并点击下一步
- 让我们继续使用自动生成CSR选项
- 选择“免费”计划
接下来,您需要验证域名所有权。有几个选项。
- DNS – 如果您可以添加DNS记录项
- Email – 如果您可以接收到[email protected]的电子邮件
- 文件上传 – 如果您可以在域的根目录上上传文件
选择适合您的选项。我将继续使用DNS条目。
- 我已添加了CNAME并准备验证域名。
- 最后,一旦验证通过,SSL证书就可以下载。
这是我下载的证书。
现在是时候实施它了。
在Apache上实施
下面,我将在Ubuntu上安装Apache。
登录服务器并使用apt-get命令进行安装。
sudo apt-get install apache2
让我们使用链接_3命令查看Apache是否正在运行。
root@yaoweibin-lab:~# systemctl status apache2
● apache2.service - Apache HTTP服务器
已加载: 已加载 (/lib/systemd/system/apache2.service; 启用; 出厂预设: 启用)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
活动: 活动 (运行中) since Sat 2020-05-23 16:15:56 UTC; 3s ago
进程: 7852 ExecStop=/usr/sbin/apachectl stop (代码=已退出,状态=0/成功)
进程: 14179 ExecStart=/usr/sbin/apachectl start (代码=已退出,状态=0/成功)
主进程: 14196 (apache2)
任务: 55 (限制: 2362)
CGroup: /system.slice/apache2.service
├─14196 /usr/sbin/apache2 -k start
├─14199 /usr/sbin/apache2 -k start
└─14200 /usr/sbin/apache2 -k start
May 23 16:15:56 yaoweibin-lab systemd[1]: 正在启动 Apache HTTP服务器...
May 23 16:15:56 yaoweibin-lab apachectl[14179]: AH00558: apache2: 无法可靠确定服务器的完全限定域名,使用 127.0.1.1。请在主配置文件中设置 'ServerNam
May 23 16:15:56 yaoweibin-lab systemd[1]: 已启动 Apache HTTP服务器。
很好,它正在运行。
我的域名(lab.yaoweibin.com)已经指向了这个Apache服务器。
但是正如你所看到的,它没有被保护,因此我们将配置从ZeroSSL获得的证书。
- 让我们在/etc下创建一个名为
sslCA
的目录来存储证书文件。
cd /etc
mkdir sslCA
- 将文件传输到服务器上新创建的文件夹中
root@yaoweibin-lab:/etc/sslCA# ll
总用量 20
drwxr-xr-x 2 root root 4096 May 18 12:13 ./
drwxr-xr-x 92 root root 4096 May 22 06:07 ../
-rw-r--r-- 1 root root 2430 May 18 05:37 ca_bundle.crt
-rw-r--r-- 1 root root 2292 May 18 05:37 certificate.crt
-rw-r--r-- 1 root root 1702 May 18 05:37 private.key
- 启用SSL模块
sudo a2enmod SSL
- 我们需要重新启动Web服务器以便识别更改。
sudo service apache2 restart
- 接下来的步骤是在Apache SSL配置文件上配置证书文件。
cd /etc/apache2/mods-available
- 文件名是ssl.conf。我们需要在
<VirtualHost
指令中添加以下内容。
SSLEngine on SSLCertificateFile /etc/SSLCA/certificate.crt SSLCertificateKeyFile /etc/SSLCA/private.key SSLCertificateChainFile /etc/SSLCA/ca_bundle.crt
- 保存文件并退出
:wq!
重新启动后,站点上将启用SSL。使用https://访问站点。
如你所见,”连接是安全的“。这意味着我们的SSL证书已成功应用于我们的Web服务器。
Nginx的实施
Nginx位于Ubuntu的默认存储库中,因此可以使用适当的软件包系统从这里安装它。
- 以下命令用于安装Nginx。
sudo apt install nginx
- 安装成功后,可以使用以下命令启动Nginx。
systemctl start nginx
- 检查Nginx的状态。
root@yaoweibin-lab:~# systemctl status nginx
● nginx.service – 一个高性能的Web服务器和反向代理服务器
已加载: 已加载 (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
活动的: 活动的 (正在运行) since Tue 2020-05-19 06:54:00 UTC; 4 days ago
文档: man:nginx(8)
进程: 8634 ExecStop=/sbin/start-stop-daemon –quiet –stop –retry QUIT/5 –pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
进程: 8661 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
进程: 8653 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
主进程: 8664 (nginx)
任务: 2 (limit: 2362)
控制组: /system.slice/nginx.service
├─8664 nginx: 主进程 /usr/sbin/nginx -g daemon on; master_process on;
└─8707 nginx: 工作进程
May 19 06:54:00 yaoweibin-lab systemd[1]: 正在启动一个高性能的Web服务器和反向代理服务器…
May 19 06:54:00 yaoweibin-lab systemd[1]: nginx.service: 无法从文件/run/nginx.pid中解析PID: 无效的参数
May 19 06:54:00 yaoweibin-lab systemd[1]: 已启动一个高性能的Web服务器和反向代理服务器。
- 预期情况下,浏览器将显示警告,因为与该站点的连接不安全。
让我们快速使用HTTPS实现证书,从而使该站点变得安全。
- 让我们在
/etc/nginx/conf.d
位置创建example.com.conf
文件。文件内容如下所示。
server {
listen 443 SSL default_server;
listen [::]:443 SSL default_server ;
server_name lab.yaoweibin.com lab.yaoweibin.com;
root /var/www/html;
}
- 现在需要在位于“
/etc/nginx
”目录中的nginx.conf
文件中添加证书文件名。 - 在http指令中添加以下内容
ssl_certificate /etc/sslCA/certificate.crt;
ssl_certificate_key /etc/sslCA/private.key;
- 重新启动Nginx以验证更改
systemctl restart nginx
就这样。
有兴趣学习Nginx吗?查看这个fundamentals course。
测试SSL/TLS配置
默认配置可能存在漏洞,我强烈建议在实施证书之后进行testing your site。有很多online tools you can check out here。
结论
我希望这给您一个从ZeroSSL获取证书并在两个最受欢迎的Web服务器中实施的思路。