欢迎光临,了解微信小程序开发,就上易用通!

从http升级到https 十分钟搞定免费 SSL 证书申请、签发和配置

发布:2018-01-25 15:12浏览: 来源:网络 作者:tianshu

如果你正在开发微信小程序,并还没有https,这篇可能可以帮到你。
可https,在国内线上用https的都不算多,更何况是开发过程中用https,应该就更少了吧。
本篇不讲什么是https,什么是SSL,什么是nginx
想了解这些的请绕道,相信有很多优秀的文章会告诉你。
本篇要讲的在最短的时间内,让你的网站从http升级到https。
开始教程前再说一句:https你值得拥有。

从http升级到https 十分钟搞定免费 SSL 证书申请、签发和配置(图1)

开始使用Let's Encrypt项目

Let's Encrypt项目官网: https://letsencrypt.org/getting-started/

推荐使用certbot自动签发证书工具。

访问 https://certbot.eff.org/ ,选择对应的 WebSever 程序以及操作系统,即可获得 certbot 相关使用指导。

按照指导安装相应的依赖,然后下载 certbot 自动签发证书工具。
  1.  
  2.     wget https://dl.eff.org/certbot-auto
  3.     chmod a+x certbot-auto
  4.  
签发证书

假设你的服务器是CentOS+NginX,certbot-auto的文件路径是/path/to/certbot-auto,域名是 www.example.com ,对应的网站根目录路径是 /usr/share/nginx/html/ ,请使用以下命令为服务器签发证书:
  1.  
  2.     /path/to/certbot-auto certonly --webroot -w /usr/share/nginx/html/ -d example.com -d www.example.com
  3.  
复制代码

certbot-auto工具会在/usr/share/nginx/html/的目录下自动创建一个.well-known的文件,然后通过访问 https://www.example.com/.well-known 来验证你所签署的域名是否正确解析到了当前主机上。

成功签发的证书会自动存至 /etc/letsencrypt/live/www.example.com/ 目录下。

自动续签

Let's Encrypt证书有效期为 90 天,请及时续签。续签命令如下:
  1.  
  2.     /path/to/certbot-auto renew --quiet


以crond为例,可以在/etc/crontab中添加两行配置,使之自动续签:
  1.  
  2.     0 0 * * * /path/to/certbot-auto renew --quiet
  3.     0 12 * * * /path/to/certbot-auto renew --quiet
  4.  

这行命令会在每天 0 点和 12点自动尝试帮你续签。根据Let's Encrypt官方说明,在证书到期之前,进行以上操作不会有任何影响,并且还可以及时避免「由于某些故障导致的证书被错误吊销」。

NginX配置

假设NginX配置文件位于/etc/nginx/conf.d/目录下,可以新建一个www.example.com.conf的文件,内容如下:
  1.  
  2.     server {
  3.         listen 80;
  4.         server_name www.example.com;
  5.     
  6.         location / {
  7.             return 301 https://$server_name$request_uri;
  8.         }
  9.         # 301 重定向,强制全站跳转到 HTTPS,非必须
  10.     }
  11.     
  12.     server {
  13.         listen 443 ssl;
  14.         server_name www.example.com;
  15.         ssl on;
  16.         ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
  17.         ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
  18.         ssl_prefer_server_ciphers On;
  19.         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  20.         ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
  21.     }
  22.  

WebSocket的WS转安全协议WSS的NginX配置
  1.  
  2.      location  ~ ^/socket.io {
  3.                     # switch off logging
  4.                     access_log off;
  5.     
  6.                     # redirect all HTTP traffic to localhost:8080
  7.                     proxy_pass https://127.0.0.1:3110;
  8.                     proxy_set_header X-Real-IP $remote_addr;
  9.                     proxy_set_header Host $host;
  10.                     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  11.     
  12.                     # WebSocket support (nginx 1.4)
  13.                     proxy_http_version 1.1;
  14.                     proxy_set_header Upgrade $http_upgrade;
  15.                     proxy_set_header Connection "upgrade";
  16.             }
  17.  
  18.  





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。