python调用flash文件,
放弃
在我开始之前,”我注意到隐含的月亮注释。首先,在生产服务器或开发服务器上执行此操作时,您需要考虑。例如,如果您正在使用Apacheweb服务器,您可以通过Apache完成HTTPS组件。唯一的方法是将证书详细信息(可选)传递给服务器app应用程序,并验证APP应用程序本身的序列号。
这是可能的。
然而,这种方法被认为是一种糟糕的编程实践。不幸的是,它不能通过flask.request访问,也不能与烧瓶袋一起使用。但是,Flask使用Werkzeug,您可以通过修补werkzeug.serving包来编写主Flask代码。我打算将来更新闪存或Werkzeug。补丁可能已经损坏,需要重新考虑,不建议使用。一、从0.9到1.0。
这提供了一种不使用web服务器的解决方案。但是,建议使用web服务器/环境变量的组合。这是比较干净的做法。
我做了一些测试,看看是否容易实现。该方法的可行性可以在新开发的代码库“werkzeug-0.10 _ dev dev _ 2014 12 23-py 2.7”中得到验证。
您可能需要验证每个证书中的序列号(种子号)。还有其他变数。众所周知,序列号对于每个证书都是唯一的,并且是在服务器端证书生成期间确定的。这有助于将此信息与客户端记录和证书信息(如果适用)一起保存,并在以后验证客户端证书的序列号。注意:您可能需要在十六进制和十进制之间进行转换。
Werkzeug开发2014122
werkzeug . serving . basewsgiserver . _ _ init _ _调用wrap_socket()中添加了以下选项:
用这些;
server_side=True,ca _ certs=/etc/Apache2/SSL/ca。PEM ,cert _ reqs=SSL . cert _ required ca _ certs
Ssl。CERT_ required:需要使用ca_ certificate进行客户端证书验证。
注意:如果客户端证书的初始身份验证失败,则无法获得客户端证书。号码
然后我在我的flask测试类中修补了verify_request。
其中defverify_request(自身,请求,客户端地址):
cert=request.getpeercert(true)
raw=decoder.decode(cert ) [0]
您的证书的“打印”序列号为:%% str (raw [0] [1]
# todo:dochecksifserialnoisokthenreturntrue
返回true
werk zeug . serving . basewsgiserver . verify _ request=verify _ request
虽然可以证明这一点,但是为了找到更好的方法来执行回调或重写,可能有必要调查由BaseWSGIServer继承的http服务器类的请求处理程序。
Werkzeug 0.9.X
如果你使用的是Werkzeug 0.9.X,请假设你使用的是从OpenSSL导入SSL导入。请在此处查看代码片段。这个我没测试过。
可能对这个版本的手机感兴趣;
-context.set_verify(mode,callback)).
-connection . get _ peer _ certificate(
明确
我不知道。第一次握手的时候你说要送CSR。如果这是一个客户端证书生成过程,您可能需要重新考虑如何在系统和环境的上下文中执行此操作。如果你能得到更多的信息,你可以发表更多的评论。
此外,SSL/TLS上下文中的“握手”通常是指首先使用现有证书创建安全连接的操作。握手之后,建立了联系,而不是严格意义上的联系。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。