- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我生成了一些证书如下:
OpenSSL> req -new -nodes -newkey rsa:2048 -keyout cert.key -out cert.csr
我没有太多接触证书相关的工作,但作为签署我的 xml 的第一步,我需要阅读这个证书文件,但我在这方面失败得很惨。
这是我通过 SO 获得的一些尝试的终端外壳转储:
尝试1
In [2]: import OpenSSL.crypto
In [3]: st_cert=open('_test_certs/cert.csr', 'rt').read()
In [4]: st_cert
Out[4]: '-----BEGIN CERTIFICATE REQUEST-----\r\nMIIXsDDCAakCAQAwfDELMAkGA1UEBhMCSU4xFTATBgNVBAcMDERlZmF1bHQgQ2l0\r\neTEiMCAGA1UECgwZaW5Db250cm9sLVB1cmNoYXNlQ29udHJvbDEbMBkGA1UECwwS\r\naW5jb250cm9sbXRmLXBjYXBpMRUwEwYDVQQDDAxJYmlib19DbGllbnQwggEiMA0G\r\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDqYYPd8qXWGY/7vG1QcofjT5ghODSQ\r\nJ0eiJWudnf/hrx8vykdFNeARAVZGWBgj6DGBRPznHKBX1QbvrjcZPmgGOnxJW2ax\r\nNpJ1spN4GLI3OD0lOVl4U5U9g9yPrjHRxntz3TaN5wsNy/OUn5BzGpNrMetNrSId\r\n8DDyQqhuLYpqdqwUm/j/sABLjx9G7e+C65xQCg4LBVNHw/qFAHv4bFqZbGcSnwkv\r\nNc596OHJRAvQ4p4XsJ346EVXpW2KV0iJfENvNcDTytxJ/lV3ayakhdfQcRSWD4Mk\r\n4RVaHTnk9p4AWUOuA3mTCfiRWPYu5hRGypb0ayBHGr902hWIel9cwLhDAgMBAAGg\r\nADANBgkqhkiG9w0BAQUFAAOCAQEAbVxm4DxXyah2APV8U43T/teR0EdH0MyB56wT\r\nDOmJ+eZk5q4QoxNy65Y11cdbkExCXhA7kUHhTjaoEES06zuroanAO59/OLZ+9gUP\r\ncspN0MSo0Dq58jTu030f5yQpARQsgCkQ7xkm2OYtSOkIx8iRnDywax20YRYE6JaB\r\nyfi4oyWoSpGUMEfQY9vGukqf9HKN7f9UFep0Lk5aJ6Jl4V9T1fR6n+IZCUMMd2ij\r\nVM3ywRM/zUgzPy0nE728LI2FmitwHqAmHchRfbHcEZI/xqVeT99NrqCzjX6gNtZa\r\nv8VZTDPDJAKoHX8xvKZLfyMYe2teW1SHPB9Vzhg2VQuutU+zVw==\r\n-----END CERTIFICATE REQUEST-----\r\n'
In [5]: c=OpenSSL.crypto
In [6]: cert=c.load_certificate(c.FILETYPE_PEM, st_cert)
---------------------------------------------------------------------------
Error Traceback (most recent call last)
<ipython-input-6-50f41db2c094> in <module>()
----> 1 cert=c.load_certificate(c.FILETYPE_PEM, st_cert)
/usr/local/lib/python2.7/site-packages/OpenSSL/crypto.pyc in load_certificate(type, buffer)
1509
1510 if x509 == _ffi.NULL:
-> 1511 _raise_current_error()
1512
1513 cert = X509.__new__(X509)
/usr/local/lib/python2.7/site-packages/OpenSSL/_util.pyc in exception_from_error_queue(exception_type)
46 text(lib.ERR_reason_error_string(error))))
47
---> 48 raise exception_type(errors)
49
50
Error: [('PEM routines', 'PEM_read_bio', 'no start line')]
尝试2
In [46]: from Crypto.PublicKey import RSA
In [47]: from Crypto.Util import asn1
In [48]: from base64 import b64decode
In [49]: keyDER = b64decode(cert)
In [50]: keyDER
Out[50]: '0\x82\x02\xf00\x82\x01\xd8\x02\x01\x000\x81\x891\x0b0\t\x06\x03U\x04\x06\x13\x02IN1\x100\x0e\x06\x03U\x04\x08\x13\x07HARYANA1\x100\x0e\x06\x03U\x04\x07\x13\x07GURGAON1"0 \x06\x03U\x04\n\x13\x19inControl-PurchaseControl1\x1b0\x19\x06\x03U\x04\x0b\x13\x12incontrolmtf-pcapi1\x150\x13\x06\x03U\x04\x03\x14\x0cIbibo_Client0\x82\x01"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xb9\xa8\xfaXY\x1c\x98\xd8SA\xf9\x92\x8cG\x8b\x945\xe4\xf4~\xe9|:\xf9Ei\xde\x17\x0c\x90{#\x9e\xfb.%\xb1\xaf \x831y\xcfb=\x9b\xd3\x9cP/\xd7\xfc\xc8\xaeGy+\xde\xe9\xd2Jn\x8e.|2B\xd6\xc4\xd3\xd7U\xce\xe5 _\x1eW\x81\xe7W\xddD\'\xe7Ow\xf6\x15\xc4\xb31\xe9\x89\xb7\xcaA\xc2\xba\xc1\xb5c\xa03\x0e\xe4\r\xc4\xc1\xc1\xf2 Zzl\xb7\xb1\xce%\x82\x85\x16\xcc \xd9-^\x01N\xab\xc1\xa7\xfa\x18=\xaeA?\xf59v-\xd0`/c\xb8\x92F\xf7\xe0`\xca\xdb\xce\xda\x8dP\x0c\xeb\xd1\xb0%\xb7\x94\x86\xbb9\xd5}/\xea\x8f\xf0K\x8a\xaf\x90\xf1}aj\x83\x8e<R\xa3\xaa\xcb\x10<A#2n\xe8\xb9)\x90\xc8D\xe8\\\xf9j!\xa4h\x8c\xbe\xa8\x96\xa8\x15\xa5\x9at\x83U@\xf6\x8fK\x80u\xda\x9c/gA\xc6\x86\x16\xaf\xd9\xf4\x13\xcf\xb7\x13\xfe\x15d\xbb\xfd\xeb\x14\x9a7+\xd9\x04\x9ef\x8ck\x02\x03\x01\x00\x01\xa0!0\x1f\x06\t*\x86H\x86\xf7\r\x01\t\x071\x12\x13\x10BqtsA11BiFS3UA==0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x8f\xc6q\xcd6\xfaM\xaah\x1a\xea\x04\x03\'[\x1aR\xda\x15\x1dp5\xb6\xb3n\xfa\x1a\x81\x8e}\xcb(d\xb6\xb5\xbc[\xb4D\x970\xbb\xd1\xefXc\x8a\xde{V\xb0_i\xf2<_\xad\x9f\xe8)N\xc2e\'%\xe2\xe5\xecr\x15\xe6\xb3\x08\xfd\x88\x07lf^\x03\xb3\x90}\x93\x84\xfb\xf9Z\x91\x9d\xea\xde\xda\x94]\xd7\r\x97\xd4\x16I\xf4 \xedmW\x8b\xf09\x80\xbc\x11\xd6\xe6a\xd2\xfbFj\xe5\xbf\x93\x7fu\x12\xdf\xa0AV\xdd\xd2\x08\x88\x81\xe5Z\xd3\xae\xcd\xa0BD\xdb\x0b\x9c\xdb\xe1D\xfc6>\x13\xed7\x17\xab\x05(\x8a\xd7I1\x9a\xad\xa7\xde$\xab0\x8e\xe1Jk>6\xb4\xb6\xbd\xed\xe4&\x9c\xef:\xf81\xe3*\xa7\xd77\xf0\xcbx\x01c^\x9cP\xef\x1eA\xf5\x1f\xf1\xac\xcf\xd3D\xc6\xda!\xad\xd5T\x91\xd7\x8c\x99\x0eI\xb6a\x96\xccu8\n\x04y$\xfb\x9f\xff\x80By#\xf0\xe1\xf6w\xaar\xfd\xbe\x02\xceV?\x04>\x7f\x9e\x8c\x92'
In [51]: seq = asn1.DerSequence()
In [52]: seq
Out[52]: <Crypto.Util.asn1.DerSequence instance at 0x1169d7710>
In [53]: seq.decode(keyDER)
Out[53]: 756L
In [54]: keyPub = RSA.construct( (seq[0], seq[1]) )
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-54-f8c06e826410> in <module>()
----> 1 keyPub = RSA.construct( (seq[0], seq[1]) )
/usr/local/lib/python2.7/site-packages/pycrypto-2.6.1-py2.7-macosx-10.10-x86_64.egg/Crypto/PublicKey/RSA.pyc in construct(self, tup)
537 :Return: An RSA key object (`_RSAobj`).
538 """
--> 539 key = self._math.rsa_construct(*tup)
540 return _RSAobj(self, key)
541
/usr/local/lib/python2.7/site-packages/pycrypto-2.6.1-py2.7-macosx-10.10-x86_64.egg/Crypto/PublicKey/_slowmath.pyc in rsa_construct(n, e, d, p, q, u)
82 def rsa_construct(n, e, d=None, p=None, q=None, u=None):
83 """Construct an RSAKey object"""
---> 84 assert isinstance(n, long)
85 assert isinstance(e, long)
86 assert isinstance(d, (long, type(None)))
AssertionError:
尝试 3
In [41]: import OpenSSL.crypto
In [42]: cert
Out[42]: 'MIIC8DCCAdgCAQAwgYkxCzAJBgNVBAYTAklOMRAwDgYDVQQIEwdIQVJZQU5BMRAwDgYDVQQHEwdHVVJHQU9OMSIwIAYDVQQKExlpbkNvbnRyb2wtUHVyY2hhc2VDb250cm9sMRswGQYDVQQLExJpbmNvbnRyb2xtdGYtcGNhcGkxFTATBgNVBAMUDEliaWJvX0NsaWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALmo+lhZHJjYU0H5koxHi5Q15PR+6Xw6+UVp3hcMkHsjnvsuJbGvIIMxec9iPZvTnFAv1/zIrkd5K97p0kpuji58MkLWxNPXVc7lIF8eV4HnV91EJ+dPd/YVxLMx6Ym3ykHCusG1Y6AzDuQNxMHB8iBaemy3sc4lgoUWzCDZLV4BTqvBp/oYPa5BP/U5di3QYC9juJJG9+BgytvO2o1QDOvRsCW3lIa7OdV9L+qP8EuKr5DxfWFqg448UqOqyxA8QSMybui5KZDIROhc+WohpGiMvqiWqBWlmnSDVUD2j0uAddqcL2dBxoYWr9n0E8+3E/4VZLv96xSaNyvZBJ5mjGsCAwEAAaAhMB8GCSqGSIb3DQEJBzESExBCcXRzQTExQmlGUzNVQT09MA0GCSqGSIb3DQEBBQUAA4IBAQCPxnHNNvpNqmga6gQDJ1saUtoVHXA1trNu+hqBjn3LKGS2tbxbtESXMLvR71hjit57VrBfafI8X62f6ClOwmUnJeLl7HIV5rMI/YgHbGZeA7OQfZOE+/lakZ3q3tqUXdcNl9QWSfQg7W1Xi/A5gLwR1uZh0vtGauW/k391Et+gQVbd0giIgeVa067NoEJE2wuc2+FE/DY+E+03F6sFKIrXSTGarafeJKswjuFKaz42tLa97eQmnO86+DHjKqfXN/DLeAFjXpxQ7x5B9R/xrM/TRMbaIa3VVJHXjJkOSbZhlsx1OAoEeST7n/+AQnkj8OH2d6py/b4CzlY/BD5/noyS'
In [43]: c=OpenSSL.crypto
In [44]: cert=c.load_certificate(c.FILETYPE_PEM, cert)
---------------------------------------------------------------------------
Error Traceback (most recent call last)
<ipython-input-44-4c3ed52bc50d> in <module>()
----> 1 cert=c.load_certificate(c.FILETYPE_PEM, cert)
/usr/local/lib/python2.7/site-packages/OpenSSL/crypto.pyc in load_certificate(type, buffer)
1509
1510 if x509 == _ffi.NULL:
-> 1511 _raise_current_error()
1512
1513 cert = X509.__new__(X509)
/usr/local/lib/python2.7/site-packages/OpenSSL/_util.pyc in exception_from_error_queue(exception_type)
46 text(lib.ERR_reason_error_string(error))))
47
---> 48 raise exception_type(errors)
49
50
Error: [('PEM routines', 'PEM_read_bio', 'no start line')]
尝试 4
In [37]: from Crypto.PublicKey import RSA
In [38]: from base64 import b64decode
In [39]: keyDER = b64decode(cert)
In [40]: keyPub = RSA.importKey(keyDER)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-40-6053c2c14edb> in <module>()
----> 1 keyPub = RSA.importKey(keyDER)
/usr/local/lib/python2.7/site-packages/pycrypto-2.6.1-py2.7-macosx-10.10-x86_64.egg/Crypto/PublicKey/RSA.pyc in importKey(self, externKey, passphrase)
678 if bord(externKey[0])==0x30:
679 # This is probably a DER encoded key
--> 680 return self._importKeyDER(externKey)
681
682 raise ValueError("RSA key format is not supported")
/usr/local/lib/python2.7/site-packages/pycrypto-2.6.1-py2.7-macosx-10.10-x86_64.egg/Crypto/PublicKey/RSA.pyc in _importKeyDER(self, externKey)
586 pass
587
--> 588 raise ValueError("RSA key format is not supported")
589
590 def importKey(self, externKey, passphrase=None):
ValueError: RSA key format is not supported
我只是在寻找一种 pythonic 方式来读取证书和 key 文件。
已经试过了:
How to read a RSA public key in PEM + PKCS#1 format
How to load an RSA key from a PEM file and use it in python-crypto
How to verify a JWT using python PyJWT with a public PEM cert?
最佳答案
该 openssl 命令生成一个 key 对和一个证书签名请求 (CSR),不是证书。将 CSR 提供给证书颁发机构 (CA) 进行签名。然后您可以从 CA 获得证书。
为了内部使用和测试目的,通常会生成一个自签名证书。 openssl 命令是:
openssl req -x509 -newkey rsa:2048 -sha256 -keyout key.pem -nodes -out cert.pem -days 365
生成的证书和 key 文件都是 PEM 格式(基本上是用页眉和页脚行进行 Base64 编码),您在尝试 #1 中的代码现在应该可以读取证书。
如果从 key.pem 中删除页眉和页脚行,则来自 this answer 的代码应该可以读取 RSA key 。
关于python - 在 Python 中读取证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34808308/
我遇到以下问题。我想读取一个包含数百万行和数百列的大型 csv。我想向下转换列的数据类型。我的方法是读取 csv,然后使用 pd.to_numeric() 对其进行向下转换。我不知道列数及其类型。在读
目前,我从 SQL server (2008) 数据库获取数据。 cyurrent的方法是使用DataTable,然后将其传递并使用。 if (parameters != null)
我有以下问题。我有一个巨大的 csv 文件,想用多处理加载它。对于一个包含 500000 行和 130 列不同数据类型的示例文件,Pandas 需要 19 秒。我试过 dask 因为我想多处理阅读。但
是否有关于用于序列化各种 MFC 数据结构的二进制格式的明确文档?我已经能够在十六进制编辑器中查看我自己的一些类,并使用 Java 的 ByteBuffer 类读取它们(使用自动字节顺序转换等)。 但
我正在使用 Selenium 进行测试,我们用 HTML 文件编写测试用例,并用它们制作测试套件,我们的要求是编写足够健壮的测试用例,以根据测试环境改变自身。 为此,我不希望在 HTML 脚本本身中包
我需要一个 JavaScript 代码来读取存储为 .txt 文件的字典(或者也可以保存为任何其他类型的文件。它也可以在线获得)并将其内容存储在一个变量中。我不能找到一种让 JavaScript 像
我正在尝试遍历包含 SSH 登录和其他日志的日志文本文件。 程序正在返回 SSH 登录的总数。 我的解决方案确实有效,但似乎有点慢(在 200mo 文件上大约需要 3.5 秒)。我想知道是否有任何方法
我正在将大量数据从一个电子表格复制到工作簿中的其他 160 个电子表格。目前,Excel (2013) 遇到错误,因为它没有足够的资源来完成操作。 我的目标是将工作表 4 中 V13:XI1150 范
我正在尝试读取一个有 1147 行的文本文件。下面的代码仅读取第 1050-1147 行。我的目标是读取整个文件并提取位于不同行的特定值以在脚本中使用。一个示例是包含“BlockList: 2”的行中
我正在为游戏编写解释器。用户将其移动输入解释器,程序执行该移动。 现在我想为每个决定实现一个时间限制。玩家不应该能够思考超过 30 秒来写一个移动并按下回车。 call_with_time_limit
以this file例如,我正在尝试读取 data.frame 中的数据。来自 the doc (pdf 文件,表 1),它遵循一些 fortran 约定。我尝试了以下但收效甚微: dir 0' 将
我正在使用 R 阅读 Outlook 附件。我的引用在这里:Download attachment from an outlook email using R 这是我的电子邮件的截图: 这每天都会发送
我不会从表格中读取行来将主题放在列表中 php脚本 $url_obj='http://'.$host.':8069/xmlrpc/object'; $sock=new xmlrpc_client($u
我有一个这样的 csv 文件: id,name,value 1,peter,5 2,peter\,paul,3 我如何读取此文件并告诉 R "\," 不表示新列,仅表示 ","。 我必须添加该文件
我正在尝试读取 ~/Library/Preferences/com.apple.mail.plist (在 Snow Leopard 上)以获取电子邮件地址和其他信息以进入“关于”对话框。我使用以下代
This question already has answers here: How do I use floating-point division in bash? (19个回答) 5个月前关闭
本练习的目标是读取输入文件并将其存储到表中,然后验证输入中的某些字段并输出任何错误记录。我需要读取并存储每个策略组,以便表中一次仅存储 5 条记录,而不是整个文件。 所以我需要读取一个包含 5 条记录
据我了解,LWT 插入始终以 SERIAL 一致性级别完成。如果为 true,这是否意味着读取作为 LWT 插入的行可以安全地以 ANY 的一致性级别读取? 换句话说,我假设 LWT 插入是完全一致的
我看到很多很多通过java脚本读取cookie的函数,但我只想在变量中使用它一次,我是JS新手。 这是我的代码 var TheNumber = (Math.random() + '') * 10000
我正在使用 asp.net 和 C#。我在服务器上部署了一个应用程序[已发布],现在我想查看该网站的代码,据我所知,我可以阅读程序集来查看代码。 请告诉我如何实现它。 提前致谢。 最佳答案 您可以使用
我是一名优秀的程序员,十分优秀!