首页 > 其他分享 >Flask配置https访问协议

Flask配置https访问协议

时间:2022-11-09 12:16:13浏览次数:72  
标签:https pem Flask ca server 访问 client key out

在工作中总有会遇到不得不使用https服务的时候,如我在工作中就遇到了苹果ipa安装包请求地址必须使用https协议不然会提示证书错误.
接下来就简单描述下flask怎么启动https服务
安装pyOpenSLL

pip install pyOpenSSL

在Terminal内生成服务端的证书


# 生成私钥,按照提示填写内容
openssl genrsa -des3 -out server.key 1024
 
# 生成csr文件 ,按照提示填写内容
openssl req -new -key server.key -out server.csr
 
# Remove Passphrase from key
cp server.key server.key.org 
openssl rsa -in server.key.org -out server.key
 
# 生成crt文件,有效期1年(365天)
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

在flask中使用

from flask import Flask    
app = Flask(__name__)    
app.run(ssl_context=('your_path/server.crt', 'your_path/server.key'))  

启动站点服务后你会发现站点的协议都为https协议.
但是浏览器访问时会提示证书不安全,通过网上搜集资料目前我知道有两种方法可以解决证书不安全问题:
1.客户端安装对应的客户端证书
2.使用第三方授权机构颁发的证书如阿里云

使用第三方授权机构的方法我在这就不描述了,网上看到了一篇很全的生成个人证书的方法
https://blog.csdn.net/yannanxiu/article/details/70670225 大家可以进行参考,亲测可用.
使用感受,创建密钥的方式都是一样的,创建证书请求的方法都是一样的,导出成浏览器支持的.p12格式的方法都是一样的,唯一三个的区别在自签署证书,server及client的证书区别在Common Name填写,server需要填写服务器ip.

#生成CA证书
openssl x509 -req -in  -out  -signkey  -days 3650
#生成server及client证书
openssl x509 -req -in  -out  -signkey  -CA  -CAkey  -CAcreateserial -days 3650

我把内容也复制过来,万一链接失效方便查阅
windows 下OpenSSL下载地址:
http://slproweb.com/products/Win32OpenSSL.html
我根据我电脑版本选择了

 

 

之后就是根据指令生成证书了
生成CA证书
创建私钥

openssl genrsa -out ca/ca-key.pem 1024

好多同学对这些参数有疑问以下是简单说明

openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [numbits]

选项说明:

-out filename     :将生成的私钥保存至filename文件,若未指定输出文件,则为标准输出。

-numbits            :指定要生成的私钥的长度,默认为1024。该项必须为命令行的最后一项参数。

-des|-des3|-idea:指定加密私钥文件用的算法,这样每次使用私钥文件都将输入密码,太麻烦所以很少使用。

-passout args    :加密私钥文件时,传递密码的格式,如果要加密私钥文件时单未指定该项,则提示输入密码。传递密码的args的格式见[openssl密码格式]

创建证书请求,需要填的参数意义不大可根据喜好填写

openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:

自签署证书

openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650

将证书导出成浏览器支持的.p12格式

openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12

生成server证书
这一步生成的证书是要放在服务器上。
创建私钥

openssl genrsa -out server/server-key.pem 1024  
> openssl req -new -out server/server-req.csr -key server/server-key.pem

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:192.168.1.246   # 注释:一定要写服务器所在的ip地址
Email Address []:

自签署证书

openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650

将证书导出成浏览器支持的.p12格式

openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12

生成client证书
创建密钥

openssl genrsa -out client/client-key.pem 1024

创建证书请求

> openssl req -new -out client/client-req.csr -key client/client-key.pem 

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []:
An optional company name []:

自签署证书

openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650  

将证书导出成浏览器支持的.p12格式

openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12  
    2人点赞   Python_TOOL    

作者:vvccool
链接:https://www.jianshu.com/p/3d743fca1fd6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:https,pem,Flask,ca,server,访问,client,key,out
From: https://www.cnblogs.com/ai594ai/p/16873165.html

相关文章

  • 「WGCLOUD 」内网中的agent不能直连访问server,通过nginx给server转发上报数据的配置
    有一种场景,我们的server部署在公网,但我们局域网的主机都不能直连访问server比如只有主机A可以连接访问server,那么就可以在主机A部署nginx然后内网中的主机agent都把请求......
  • [Kyana]服务器php+https配置
    00|前排提示本文涉及的apache、nginx和caddy三者并无优劣之分,各有擅场,在个人博客使用时选取自己喜欢的即可。如无特殊提示,本文默认环境为UbuntuServer20.04(Linux5.4)......
  • Python|使用Flask进行Web开发
    基础知识Flask是一个用Python编写的Web应用程序框架。它由ArminRonacher开发,他领导一个名为Pocco的国际Python爱好者团队。Flask基于WerkzeugWSGI工具包和Jinja2模......
  • 继承类成员访问修饰符
    访问权限;public是最自由的,没有任何限定;private、protected对比看,相同地方:类内、友元函数可以访问;不同地方:被protected修饰的类成员可以在子类内部访问到;private修饰的不......
  • nginx 协议修改 HTTP改为HTTPS
    协议修改HTTP改为HTTPS1.存在证书和私钥1.把证书和私钥放到指定位置直接把证书和私钥放到nginx容器映射物理目录的conf/conf.d中(这个目录自定义,想放在哪里都可以,只要可......
  • 说说http,https协议
    HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络......
  • 5大关于https的误区,你需要知道一下
    如今,https协议正在被广泛重视和使用。随着今年2月初,谷歌旗下Chrome浏览器宣布将所有http标示为不安全网站,许多网站都争相从http升级到了https。当你打开很多网站时,会发现浏......
  • 转载:谷歌浏览器一些https打不开点击高级不行的解决办法
    转载:https://blog.51cto.com/u_15275035/2925642关于谷歌浏览器一些https网站打不开点击高级不行的解决办法有些url,在谷歌浏览器上打不开,点击高级也没有继续前往的选项点......
  • Windows - win10 开放外部访问端口
    win10开放外部访问端口直接在搜索中输入“防火墙”,然后打开“防火墙高级设置”新建入站规则 选择端口,然后下一步选择连接协议,然后输入特定的端口号,然后下一步选......
  • 【前端面试题】—26道HTTP和HTTPS的面试题(附答案)
    Web前端就是当用户在浏览器地址栏中输入一行字母看到的页面结果。然而,从输入字母到看到页面中都发生了什么,数据是怎么得到的?这些都离不开HTTP/HTTPS。然而,这部分内容通常被......