为网站添加HTTPS,树莓派如何使用Let’s Encrypt的SSL证书

这篇文章将会讲述如何在Raspberry Pi上如何使用Let’s Encrypt的SSL,一步一步地安装和设置Let’s Encrypt Certbot客户端。

lets-encrypt-v1-mini-watermark.jpg

Certbot客户端会给用户设置一个SSL证书,让Web服务器运行在HTTPS之下。

Let’s Encrypt是Raspberry Pi轻松获得安全认证的SSL证书的最佳方法,并且是完全免费的。

在开始在Raspberry Pi上设置SSL之前,请确保你已经有了一个域名,并指向你的树莓派的IP地址。

如果您使用Cloudflare作为DNS提供商,那么请确保您将其设置为绕过Cloudflare,因为它隐藏了你的IP地址,这时候Let’s Encrypt工具将无法验证Raspberry Pi的IP地址,所以无法生成SSL证书。

设备清单

下面是在树莓派上设置Let’s Encrypt SSL的所有内容。

建议

可选

安装和运行LetsEncrypt

1.在Raspberry Pi上设置LetsEncrypt之前,确保所有的软件包都是最新的。

我们可以通过运行以下两个命令来实现。

sudo apt-get update
sudo apt-get upgrade

2. 现在,可以通过运行以下命令,将LetsEncrypt软件安装到Raspberry Pi上。

这款软件叫做 “Cerbot”。如果你正在运行Apache,你可以为它安装certbot模块,否则就安装标准版的certbot。
Apache

sudo apt-get install python-certbot-apache

其他的

sudo apt-get install certbot

3. Certbot终于安装完毕,可以从Let’s Encrypt中为我们的Raspberry Pi设置一个SSL证书。有几种处理方式。

如果你没有使用Apache,可以跳过这一步。如果你使用的是Apache,那么最简单的抓取证书的方法就是运行下面的命令,这样会自动抓取证书并安装到Apache的配置中。

在你这样做之前,你首先要确保80端口和443端口被转发。另外,如果你使用Cloudflare作为你的DNS提供商,你需要暂时绕过它,因为它隐藏了你的真实IP地址。

certbot --apache

4. 如果你没有运行Apache,我们可以通过两种不同的方式去抓取Let’s Encrypt的证书。我们可以使用独立的python程序。

另外,如果你运行的是其他的Web服务器,比如NGINX,我们也可以利用它来抓取证书。但是得到证书后,必须手动设置证书。

如果你没有运行其他的Web服务器,请转到步骤5a,否则请转到步骤5b。

5a. 利用独立的内置Web服务器是非常简单的,不过首先,你必须确保你的80端口是开放得,确保把example.com替换成你的域名。

certbot certonly --standalone -d example.com -d www.example.com

5b. 使用web root比使用内置的web服务器需要更多的知识。确保/var/www/example指向一个可以从互联网上访问的目录。另外,确保将example.com替换为你的网站使用的域名。

certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com

6. 运行这些命令后,系统会提示你输入一些细节,如你的电子邮件地址。这些细节是Let’s Encrypt需要的,以便跟踪它所提供的证书,也允许他们在证书出现任何问题时与你联系。

一旦你填写了所需的信息,它将继续从Let’s Encrypt抓取证书。

如果你遇到任何问题,确保你有一个有效的域名指向你的IP,确保端口80和端口443被解封,最后,如果你使用CloudFlare作为你的DNS供应商,确保你目前设置为绕过其服务器。

certbot客户端抓取的证书会存放在下面的文件夹中。当然,把example.com换成你自己的域名。

/etc/letsencrypt/live/example.com/

你可以在这些文件夹中找到完整的链文件(fullchain.pem)和证书的私钥文件(privkey.pem)。确保你不允许其他人访问这些文件,因为它们是保证SSL连接安全和识别合法连接的关键。

现在已经成功抓取了文件,可以继续设置任何你需要使用它们的软件。例如,如果你想设置NGINX来使用SSL证书,那么请按照下面的Raspberry Pi SSL Nginx指南进行设置。

使用新的SSL证书与NGINX

1. 首先打开你的NGINX配置文件,这些文件通常存储在/etc/nginx/或/etc/nginx/sites-available/中。这些文件通常存储在/etc/nginx/或/etc/nginx/sites-available/中。

一旦你找到了你的配置文件,用你最喜欢的文本编辑器打开它,例如,我的是nano。一旦你在文件中搜索像下面显示的文本块。确保你把我们的example.com换成你正在使用的域名。

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /usr/share/nginx/html;
        index index.html index.htm;

        server_name example.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

2. 对这段代码,我们需要做一些修改。请按照我们的步骤,阅读我们下面对为什么要进行修改的解释。

寻找

listen [::]:80 default_server

添加到下面

listen 443 ssl;

这个改变告诉NGINX开始监听443端口。443端口很重要,因为它是处理HTTPS/SSL流量的端口,当使用https://时,网络浏览器会尝试通过该端口进行连接。

寻找

server_name example.com;

添加到下面

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

这个变化告诉NGINX在哪里可以找到我们的证书文件,它将使用这些文件来设置SSL/HTTPS连接。它将使用这些文件来设置SSL/HTTPS连接。

私钥是保证实际连接的安全,只有你的服务器能读到和看到这个文件,这个文件应该是安全的,否则人们有可能拦截和解密你的流量。

全链包含了通过HTTPS连接与服务器对话所需的所有信息,以及验证它是一个合法签名的SSL文件所需的信息。

3. 做完所有这些改动后,你应该会得到类似下面显示的东西。当然,请确保你把example.com换成了你的域名。

写完之后,保存并退出文件,然后重新启动NGINX,这样它就会以新的配置加载。

server {
        listen 80 default_server;
        listen [::]:80 default_server

        listen 443 ssl;

        root /usr/share/nginx/html;
        index index.html index.htm;

        server_name example.com;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

        location / {
                try_files $uri $uri/ =404;
        }
}

4. 现在,你应该已经有了HTTPS连接。

现在,你的树莓派应该支持Https连接了,这个项目在树莓派搭建得网络服务器中非常有用。

希望这篇树莓派SSL教程对你有帮助,如果你有任何问题或任何反馈,请随时留言讨论。

平均: 3 / 5. votes: 2

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 为网站添加HTTPS,树莓派如何使用Let’s Encrypt的SSL证书

赞 (1)

评论

5+1=