问题标签 [pyopenssl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 pyOpenSSL 从证书或其他连接信息中提取公钥
我目前正在尝试编写一个 python 服务器脚本,该脚本应该根据其公钥对当前客户端进行身份验证。由于我使用的是 twisted,因此 twisted 文档中的示例让我开始了。
虽然我可以使用示例代码生成密钥、连接和通信,但我还没有找到以可用格式获取客户端公钥的方法。在这个 stackexchange 问题中,有人从对象中提取公钥,OpenSSL.crypto.PKey
但无法将其转换为可读格式。由于我可以在方法中或通过我的协议的任何方法访问PKey
x509 证书的对象,这将是一个不错的方法。(不接受)答案建议尝试. 不幸的是,这并没有真正产生预期的结果:虽然答案中的and可以通过简单的文本替换函数来修复,但 base64 字符串似乎与公钥不匹配。我已经提取了公钥verifyCallback
self.transport.getPeerCertificate()
crypto.dump_privatekey(PKey)
BEGIN PRIVATE KEY
BEGIN PRIVATE KEY
openssl rsa -in client.key -pubout > client.pub
正如这里提到的。dump_privatekey
它与函数的结果不匹配。
虽然在 launchpad 上仍然存在针对 OpenSSL 的开放错误,但尚未修复。这是 19 个月前报道的,最近(2012 年 10 月)有一些活动,我不希望在回购中快速修复。
client.pub
您是否还有其他想法如何以与我上面提到的文件相当的格式获取公钥?也许有一个扭曲的或 OpenSSL 连接特定的对象来保存此信息。请注意,我必须将公钥存储在协议对象中,以便以后可以访问它。
为什么没有答案被接受?
JF Sebastian 的 M2Crypto
抱歉,我没有想到我无法将证书与连接相关联的可能性。我添加了必须将公钥存储在协议实例中的要求。因此,按照 JF Sebastian 的建议peerX509.as_pem()
在函数内部使用postConnectionCheck
是行不通的。此外,至少在 python-m2crypto 的 0.21.1-2ubuntu3 版本中,我必须调用peerX509.get_rsa().as_pem()
以获得正确的公钥。使用peerX509.as_pem(None)
(因为peerX509.as_pem()
仍然需要密码)产生与 PyOpenSSL 完全相同的输出crypto.dump_privatekey(PKey)
。也许有一个错误。
除此之外,答案向我展示了一种使用以下Echo
协议类编写另一种解决方法的可能方法:
如您所见,这使用了一些我想阻止的内部类。我正在犹豫是否提交一个小补丁,它将向M2Crypto.SSL.TwistedProtocolWrappergetCert
中的类添加一个方法。TLSProtocolWrapper
即使它被上游接受,它也会破坏我的脚本与除了最先进的 m2crypto 版本之外的任何版本的兼容性。你会怎么做?
我的外部 OpenSSL 调用
好吧,这是一个基于外部系统命令的丑陋解决方法,在我看来,这比访问非公共属性还要糟糕。
python - OpenSSL.Connection 中的 unwrap 等效项是什么?
我正在使用 OpenSSL,我想关闭 SSL 连接,但想保持底层普通套接字连接处于活动状态。SSL 库似乎有它的unwrap
功能。OpenSSL.Connection
使用该类实现它的等效方法是什么?
甚至可以从服务器降级 SSL 连接吗?
pyopenssl - 如何在 Mac OS X 上安装 pyOpenSSL?
我正在使用 Titanium 3.0 并尝试更新 pyOpenSSL。我检查了 python 网站,只看到 Windows 的可下载链接。在 Tianium 论坛上,他们说“如果您使用 MacPorts 或 Homebrew 安装 Python,请使用相同的实用程序来安装 PyOpenSSL 和 PyCrypto。” 我尝试使用自制软件并执行“brew install pyopenssl”并收到错误消息“pyopenssl 没有可用的公式”。有什么建议吗?
python - 使用 python OpenSSL 从私钥获取公钥
好吧,我用 pyOpenSSL 生成了一个私钥,如下所示:
如何从中获取公钥字符串?我还没有找到这个库的什么方法。谢谢
python-2.7 - 使用 pyopenssl 创建自签名证书
我正在尝试使用 pyopenssl 生成 ac 自签名 X509v3 CA 证书。我想使用包含主题密钥标识符 (SKID) 的 keyid 添加扩展授权密钥标识符 (AKID)。
但是我下面的代码块不会将 SKID 复制到 AKID 而是引发异常。
代码如下
抛出的异常如下
现在,如果我从以下代码行中的 line keyid 参数中删除“ always ”
OpenSSL.crypto.X509Extension("authorityKeyIdentifier", False, "keyid",issuer=ca)
我将 AKID keyid 字段为空,并且它不包含 SKID,如下所示
python - Google Drive API 导入错误
我正在尝试在Google Drive API(Oauth2)的域级别执行身份验证。为此,我参考了谷歌驱动器文档链接,如下所示:
https://developers.google.com/drive/delegation
我已经安装了 openssl 但也出现错误
ImportError:尝试导入 SignedJwtAssertionCredentials 时无法导入名称 SignedJwtAssertionCredentials。
完整的回溯如下:
错误 2013-04-16 05:03:52,006 wsgi.py:219] Traceback(最近一次调用最后一次):文件“C:\Program Files\Google\google_appengine\google\appengine\runtime\wsgi.py”,第 196 行,在 Handle handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 文件“C:\Program Files\Google\google_appengine\google\appengine\runtime\wsgi.py”,第 255 行,在 _LoadHandler handler = import(路径 [0])文件“C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py”,第 692 行,装饰返回 func(self,*args,**kwargs)文件“C: \Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py",第 1766 行,在 load_module 中返回 self.FindAndLoadModule(submodule, fullname, search_path) File "C:\Program Files\Google\google_appengine\google\appengine \tools\dev_appserver_import_hook.py”,第 692 行,在装饰中返回 func(self, *args, **kwargs) 文件“C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py”,第 1630 行,在 FindAndLoadModule 描述中)文件“C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py”,第 692 行,在装饰返回 func(self, *args, **kwargs) 文件“C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py”,第 1577 行,在 LoadModuleRestricted 描述中)文件“D:\API \GoogleDrive\myapp\main.py",第 21 行,从 oauth2client.client 导入 SignedJwtAssertionCredentials ImportError:无法导入名称 SignedJwtAssertionCredentials
谁能告诉我解决方案?
c# - 将 Python (pyelliptic, openssl) ecc 密钥和签名转换为 c# (BouncyCastle?)
项目https://github.com/Bitmessage/PyBitmessage使用库https://github.com/yann2192/pyelliptic来使用 openssl。
pyelliptic 测试用例:
我将 PyBitmessage 移植到 c# https://github.com/sharpbitmessage/SharpBitmessage/。对于 openssl,我使用 BouncyCastle。
我的测试用例是(写假):
如何在 C# 中验证来自 pyelliptic 的签名?
php - 使用 openssl-php 从 x509 证书获取 validTo 日期
需要从 x509 证书中获取 validTo(到期)日期并使用当前日期进行验证。我正在使用 openssl_x509_parse($crtdata) 来解析证书,任何关于如何从结果数组中获取 validTo 日期的想法。谢谢。
python - pyOpenSSL + HTTPServer:在所有进程完成之前请求不会完成
我希望能够通过立即返回一条消息然后启动一个进程在后台运行并完成一项任务来响应 GET。这适用于 BaseHTTPServer.HTTPServer 和扩展 BaseHTTPRequestHandler。但是,当我按照此处的说明将 SSL 添加到服务器时,在子进程完成之前不会发送响应。假设 Firefox 在接收时显示它接收到的内容,并使用 Firebug 仔细检查,在子进程完成之前似乎什么都没有发送。我在 Chrome 中测试并看到了相同的结果。代码如下;我不知道如何继续调试。