Python客户端工具(应该在浏览器中工作)从pfx文件中提取值并对其进行签名

时间:2015-01-20 05:30:36

标签: python python-2.7 openssl pycrypto brython

客户端工具从客户端加载的pfx文件中提取公共名称序列号和公钥等值,然后签署公钥并发送到服务器..

我已经完成了后端python代码,它将从OpenSSL.Crypto库导入模块..

如何在客户端执行相同操作?...即签名操作应在客户端执行,

在谷歌我发现像Brython,skulpt,pyjams帮助这个..但我很困惑开始..有什么建议吗?

1 个答案:

答案 0 :(得分:1)

所以,首先要做的事情是:在服务器端和客户端运行相同的代码并不是假设。

第二件事:请注意,在客户端进行的身份验证(或“签名”)不能被视为安全。最多,客户端可以负责将签名与UI紧密结合以向用户提供动态反馈 - 但是,由于客户端发送到服务器的任何请求都很容易被脚本模拟,因此身份验证必须< / strong>为每个请求执行服务器端 - 例如,无论实际已知的用户名和密码如何,表示当前用户已正确认证的变量都可以发送为“True”。

第三件事:尽管如此,由于存在使用Python或类似语言客户端的Python的这些框架,因此确实可以在代码库中使用一些用于客户端和服务器端的模块。其中,我最熟悉的是Brython,它已经达到了很好的Python 3.x兼容性水平,而且我确实有一个项目共享代码客户端和服务器端。

重新使用的代码必须被重构以抽象任何I / O(如获取用户输入或从数据库获取值),因为这些在服务器端和客户端都是根本不同的东西。不过,一些核心逻辑可以到位,可以重复使用。

然而,像Pycrypto这样的第三方python模块将无法在客户端工作(你可能会像调用xmlrpc / jsonrpc那样使用服务器端) - 虽然现在在Brython中没有实现Python的hashlib,但该项目有一个动力,即至少可以在几天内完成javascript中存在的相同编解码器的功能请求。 (错误/功能请求可以在github.com/brython-dev/brython上打开)

(PS。我刚才发现,令我沮丧的是,目前没有标准的方法来计算任何哈希,甚至没有md5,没有第三方模块的Javascript - 只是强调像Brython或coffescript这样的框架的实用程序可以以干净的方式提出一系列功能)