服务器 nginx 使用cerbot http转https

先说前提条件:

   项目上线一天后反应说http浏览器显示不安全  看着不好看  要做成https的  因为之前没有接触过,所以一开始是很蒙蔽的,只知道https比较安全,需要有个有权威的CA来认证,签发证书...   任务下来了  就开始了自己瞎jb琢磨的道路....

一开始脑袋有泡  不知道咋jb想的  自己用openssl  自己签了个...   然后配到nginx上以后 网页提示不是私密链接   跟钓鱼网站一样....  吓得我赶紧关了  有了这次经验 自己的胆子已经有点儿小了 不敢乱改了,就算乱改 也不敢重启了。

 

首先 讲一下  用来签名的工具

 

这jb图标 长得真讨喜昂哈哈哈哈哈哈哈     感谢  非常感谢解决我的问题  感谢这个网站 感谢无私奉献的人啊啊啊啊  啊

 

安装cerbot的命令   我用的是ubuntu  16

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot 

 执行上面命令 安装完成  :)  

然后有了解到  cerbot 签名有两种方式   一种是  --webroot  一种是 --Standalone    在网上看到的区别是 第一种不需要停现在的服务  第二种需要停掉服务    那好  我需要的是第一种  :)

然后确认下你要签名的域名 是否已经指向你自己的服务器了  还有云服务的话 要记得看下安全组 443端口有没有开  总之就是要确认你的准备工作是没问题的 

在nginx  监听80的那个server里面 配上 

     location ~ /.well-known {
            allow all;
         }
 

以确保 所有人可以访问这个  .well-known 文件  因为等下webroot会在你的服务器端创建一个这样的文件 并通过80段端口来访问它,确定这个域名确实是你的 

然后执行

sudo certbot certonly --webroot -w /home/ubuntu/hello/ -d www.hello.com 

这个 -w后面的参数 是你服务器段的路径   我当时指定的是我们前段文件的位置  具体服务器其他路径可以不可以 我没有尝试

-d后面 是你的域名

成功后大概是这样子

昂 主要看到Congratulations就可以了  :)  然后他的密钥会放到  /etc/letsencrypt/live/你的域名/

一个fullchain.pem  一个  privkey.pem   这个域名下面还有很多其他的key  具体做什么用 我也没看  .....   

然后  在nginx里面  443的server里面开始配置

    server {
        listen *:443;
        ssl on;
        server_name www.hello.com;  #这里是你的域名
        ssl_certificate "/etc/letsencrypt/live/www.hello.com/fullchain.pem";   #生成的密钥对
       ssl_certificate_key "/etc/letsencrypt/live/www.hello.com/privkey.pem";#生成的密钥对
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2; #使用的协议
        ssl_ciphers         HIGH:!aNULL:!MD5;#使用的加密算法
         location / {  
          root   /home/ubuntu/service/;#这个是前段页面的路径
          index  index.html index.htm;
          autoindex on;
        }
        location ^~ /iaa/ {   #这里是因为我们是前后台分离的  前台调用我后台的接口  后台接口的前缀都是这个
          proxy_set_header        Host $host;
          proxy_set_header        X-Real-IP $remote_addr;    #这个如果不配置  每个请求到后台的  发起地址都是服务器的ip
          proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header        X-Forwarded-Proto $scheme;

         proxy_pass http://www.hello.com:8889;
        }
   }

配上这个  然后把80端口监听到的再跳转到https上   就实现了 所有的请求都归到https上

 server {
        listen *:80;
        server_name www.hello.com ; #如果有多个域名跳转到这个服务器  用空格隔开就行
        return 301 https://www.hello.com/;
    }
 

然后访问你的服务  就会发现   这个标志  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值