本篇为 树莓派(四)搭建NAS 及 树莓派(六)内网穿透 两篇之后的进阶文章。对于一个正常运行的网站,了解和使用Https是必不可少的,本篇文章主要记录个人将树莓派项目上的HTTP转换为HTTPS的过程。
前置准备
- 在树莓派上搭建好NAS并运行
- 拥有一个域名,并映射到对应的frp服务器上
-
配置过程
一、申请免费证书【如果已经有可跳过】
由于我使用的是阿里云的域名,因此申请免费证书也直接在阿里云上进行,其他的服务商也大同小异。
找到SSL证书(应用安全)
- 点击购买证书,选择 单个域名 -> DV域名级SSL -> 免费版 免费支付购买
- 支付完成之后,回到SSL控制台,然后在刚刚购买的证书那里,选择 证书申请,输入域名信息后,点击下一步绑定
- 根据阿里云的提示,验证域名(阿里云一般会自动加上解析,如果没有加就自己去域名解析里面加)
二、使用nginx + frp 进行https配置
由于之前使用http的时候,采用nginx进行反向代理,因此先来进行nginx + frp形式的https配置。
在不修改nginx的情况下,先试试泛解析好不好使。
- 下载第一步申请的证书,并将其放在服务端上
配置nginx如下所示
server {
listen 80;
listen 443 ssl;
ssl_certificate /home/cert/cloud/cloud.lixingyong.com.pem;
ssl_certificate_key /home/cert/cloud/cloud.lixingyong.com.key;
client_body_timeout 5s;
client_header_timeout 5s;
server_name *.lixingyong.com;
# charset utf-8;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header x-forwarded-proto $scheme;
}
}
刷新nginx
nginx -s reload
访问网址
访问 https://cloud.lixingyong.com, 可以看到https正确运行。
但访问其他网站,则会出现安全警告。
因此想使用一个nginx配置进行泛解析是不行的了(除非是支持泛解析的SSL证书)。那么我们就需要做一下改动,每一个域名都对应一个证书,然后再统一走反向代理接口
- 修改nginx配置
对于不同的域名,配置不同的解析地址
- 删除原来的all-lixingyong-80.conf
[x] 新增 cloud-lixingyong-80-443.conf,内容如下 ```nginx server { listen 80;
server_name cloud.lixingyong.com;
return 301 https://$server_name$request_uri; }
server {
listen 443 ssl;
client_body_timeout 5s;
client_header_timeout 5s;
server_name cloud.lixingyong.com;
ssl on;
ssl_certificate “/home/cert/cloud/cloud.lixingyong.com.pem”;
ssl_certificate_key "/home/cert/cloud/cloud.lixingyong.com.key";
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
include /etc/nginx/conf.d/location/location.conf; }
- [x] 新建location/location.conf,用来作为通用的反向代理接口
```nginx
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header x-forwarded-proto $scheme;
}
执行完毕之后,重新加载nginx,之后对于其他的域名,也使用相同的方式处理即可。
三、使用frp本身进行https配置
本文暂时不考虑此种方案,留作之后记录。