HTTPS

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面

Http

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。

一般来说我们再本地测试或者不是那么重要的时候都是使用Http用作传输协议进行工作。

比如使用python当中的Flask项目进行跑的时候是这样子

Snipaste_2021-03-11_11-38-20.png

那么我们如果要是用https的话。应该添加ssl证书使用PyOpenSSL包

首先申请ssl证书。前提有注册好的域名。我使用的阿里云注册的域名并且注册免费一年的证书。

Snipaste_2021-03-11_11-43-05.png

然后点击下载,根据自己需求下载key 和 pem 证书

Snipaste_2021-03-11_11-44-31.png

下载解压后会生成俩个文件 一个是key 一个是pem。文件名可以改。

如图: (放到与run.py同级目录)

Snipaste_2021-03-11_11-47-02.png

然后下载PyOpenSSL包
pip install PyOpenSSL

然后将证书添加到配置里运行(key 和pem顺序不能搞错。不然运行不成功)
Snipaste_2021-03-11_11-49-58.png

可以看到https的访问格式

在本地使用比较简单的配置一般都是可以,但是要部署到服务器上。进行外网的访问,那么证书,前端,域名都需要按照要求真实。

首先将flask项目进行Gunicorn + Gevent 的部署,使用docker打包到线上进行外网访问。(之前的文章有写这个操作)

因为线上是使用Gunicorn运行项目!所以我们要进行配置。
Snipaste_2021-03-11_11-58-47.png

可以使用Gunicorn命令启动Flask项目

gunicorn -w 4 -b 192.168.1.79:4000 run:app --keyfile server.key --certfile server.pem
Snipaste_2021-03-12_08-52-06.png

后面打包docker到服务器的时候是通过Gunicorn启动项目,所以Gunicorn.conf.py配置一定要写对!

然后将项目进行打包到服务器的docker上面(之前文章有写过这个操作)

Snipaste_2021-03-11_13-48-39.png

后端访问:服务器ip + 8111
前端访问:服务器ip + 8222

现在在使用nginx代理域名,以及前后端docker容器端口

Snipaste_2021-03-11_13-47-29.png

域名和证书一定是匹配的!

Snipaste_2021-03-11_13-53-08.png

前端测试

接下来可以在本地前端测试一下
使用https + 域名 + 8111 去访问后端代码接口(如果没有前端环境,可以使用Apipost 和 postman测试)
使用本地前端测试访问https + 域名 + 后端容器端口

Snipaste_2021-03-11_14-19-32.png

Snipaste_2021-03-11_14-25-25.png

这样子就成功的使用前端去调试和访问后端线上的接口和测试了

使用ApiPost测试一下接口

https + 域名 + 8111(后端线上端口) + 接口
Snipaste_2021-03-11_14-29-44.png

https + 服务器ip + 8111(后端线上端口) + 接口
Snipaste_2021-03-11_14-31-08.png

能得到数据就证明访问线上接口成功!

想要在外网使用https,就按照我的操作,将前端打包部署到docker,然后使用nginx做代理。添加域名以及ssl证书中key 和pem ,文件路径不能搞错。然后进行上线就OK了。


XiaoMiao
25 声望1 粉丝

i am bug!