本篇为 树莓派(四)搭建NAS树莓派(六)内网穿透 两篇之后的进阶文章。对于一个正常运行的网站,了解和使用Https是必不可少的,本篇文章主要记录个人将树莓派项目上的HTTP转换为HTTPS的过程。

前置准备

  1. 在树莓派上搭建好NAS并运行
  2. 拥有一个域名,并映射到对应的frp服务器上
  3. 能够使用域名访问到树莓派上的NAS服务

    配置过程

    一、申请免费证书【如果已经有可跳过】

    由于我使用的是阿里云的域名,因此申请免费证书也直接在阿里云上进行,其他的服务商也大同小异。

  4. 找到SSL证书(应用安全)

image.png

  1. 点击购买证书,选择 单个域名 -> DV域名级SSL -> 免费版 免费支付购买

image.png

  1. 支付完成之后,回到SSL控制台,然后在刚刚购买的证书那里,选择 证书申请,输入域名信息后,点击下一步绑定

image.png

  1. 根据阿里云的提示,验证域名(阿里云一般会自动加上解析,如果没有加就自己去域名解析里面加)

image.png
到这里免费的域名证书就申请完毕了

二、使用nginx + frp 进行https配置

由于之前使用http的时候,采用nginx进行反向代理,因此先来进行nginx + frp形式的https配置。
在不修改nginx的情况下,先试试泛解析好不好使。

  1. 下载第一步申请的证书,并将其放在服务端
  2. 配置nginx如下所示

    1. server {
    2. listen 80;
    3. listen 443 ssl;
    4. ssl_certificate /home/cert/cloud/cloud.lixingyong.com.pem;
    5. ssl_certificate_key /home/cert/cloud/cloud.lixingyong.com.key;
    6. client_body_timeout 5s;
    7. client_header_timeout 5s;
    8. server_name *.lixingyong.com;
    9. # charset utf-8;
    10. location / {
    11. proxy_pass http://127.0.0.1:8080;
    12. proxy_redirect off;
    13. proxy_set_header HOST $host;
    14. proxy_set_header X-Real-IP $remote_addr;
    15. proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
    16. proxy_set_header x-forwarded-proto $scheme;
    17. }
    18. }
  3. 刷新nginx

    1. nginx -s reload
  4. 访问网址

访问 https://cloud.lixingyong.com, 可以看到https正确运行。
image.png
但访问其他网站,则会出现安全警告。
image.png
因此想使用一个nginx配置进行泛解析是不行的了(除非是支持泛解析的SSL证书)。那么我们就需要做一下改动,每一个域名都对应一个证书,然后再统一走反向代理接口

  1. 修改nginx配置

对于不同的域名,配置不同的解析地址
image.png

  • 删除原来的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”;

  1. 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; }

  1. - [x] 新建location/location.conf,用来作为通用的反向代理接口
  2. ```nginx
  3. location / {
  4. proxy_pass http://127.0.0.1:8080;
  5. proxy_redirect off;
  6. proxy_set_header HOST $host;
  7. proxy_set_header X-Real-IP $remote_addr;
  8. proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
  9. proxy_set_header x-forwarded-proto $scheme;
  10. }

执行完毕之后,重新加载nginx,之后对于其他的域名,也使用相同的方式处理即可。

三、使用frp本身进行https配置

本文暂时不考虑此种方案,留作之后记录。