这篇文章将会讲述如何在Raspberry Pi上如何使用Let’s Encrypt的SSL,一步一步地安装和设置Let’s Encrypt Certbot客户端。
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教程对你有帮助,如果你有任何问题或任何反馈,请随时留言讨论。
欢迎转载,请留下出处链接:Labno3 » 为网站添加HTTPS,树莓派如何使用Let’s Encrypt的SSL证书