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

标签 python python-2.7 openssl pycrypto brython

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

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

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

在谷歌中,我发现 Brython、skulpt、pyjams 可以帮助解决这个问题。但是我开始感到困惑。有什么建议吗?

最佳答案

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

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

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

当然,重用的代码必须重构以抽象任何 I/O(例如获取用户输入或从数据库获取值),因为这些在服务器端和客户端上是根本不同的东西。尽管如此,一些核心逻辑仍然可以被双方重用。

但是第三方 python 模块,如 Pycrypto 无法在客户端工作(您可能可以编写 xmlrpc/jsonrpc 之类的调用来在服务器端使用它)- 尽管 Python 的 hashlib 目前尚未在 Brython 中实现,但该项目势头强劲,可以在几天内完成针对至少与 javascript 中存在的相同编解码器的功能请求。 (错误/功能请求可以在 github.com/brython-dev/brython 上打开)

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

关于Python 客户端工具(应该在浏览器中工作)从 pfx 文件中提取值并对其进行签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28038384/

相关文章:

Python Twisted deferToThread 函数未按预期工作

openssl - 将 CA 签名的 JKS keystore 转换为 PEM

python - 在 Pandas 数据框中的列中查找成对重叠

python - numpy NaN 并不总是被认可

python - 在python中等待xml文件写入完成

python - 在 PyGame 中切换显示的表面允许用户滚动到表面的边界之外

java - 在某些条件下最大化 GCD

python - Python 中的无效 URL : No host supplied : error while using Request. get(url)

python - Heartbleed 接收哪些类型的数据?

ssl - 如何验证导入到 keystore.jks 的自签名证书是否适用于 truststore.jks?