首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析证书的keyid - Python

解析证书的keyid - Python
EN

Stack Overflow用户
提问于 2015-11-11 03:43:29
回答 2查看 2K关注 0票数 3

我做了一个Google搜索,但我没有找到任何对我有帮助的东西。我正在尝试在Microsoft Azure中验证我的app,所以我创建了一些自签名certificates。他们给出了一个教程,教你如何解析PowerShell中的crt。我只使用Ubuntu / OS X。代码如下:

代码语言:javascript
运行
复制
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cer.Import("mycer.cer")
$bin = $cer.GetRawCertData()
$base64Value = [System.Convert]::ToBase64String($bin)

$bin = $cer.GetCertHash()
$base64Thumbprint = [System.Convert]::ToBase64String($bin)

$keyid = [System.Guid]::NewGuid().ToString()

我如何用Python编写同样的代码呢?我有.crt.key.csr.pass.keypkcs8_key文件。

更新:

我想从证书中提取keyIdcustomKeyIdentifier

EN

回答 2

Stack Overflow用户

发布于 2015-11-16 15:40:44

@菲利普,

根据您的描述,如果您想使用python获取证书信息,请参考这个简单的代码。我使用.cer作为测试文件:

代码语言:javascript
运行
复制
import OpenSSL.crypto
f=open("tested.cer", "rb")
der = f.read()
x509=OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, der)
print("serial number",x509.get_serial_number());
print("Issue Name",x509.get_issuer());
print("subject_name_hash",x509.subject_name_hash());
idif=x509.get_extension(0)
print("extension",x509.get_extension(0))
print("id",idif.get_data(),idif.get_short_name())
print("get_subject",x509.get_subject());
pkey = x509.get_pubkey()
print("Public Key ",pkey)
listdir=dir(pkey)
print(listdir)
print(pkey.bits())
print(pkey.type())
print(pkey._pkey)

同时,如果您想获取keyIdcustomKeyIdentifier形式的证书信息,我建议您参考define of these properties of certificate and this sample。您可以在该页面上找到相应的属性。有了这些属性,您就可以获得证书及其extension信息。你也可以参考这个API documents.,如果我误解了,请随时让我知道。

票数 1
EN

Stack Overflow用户

发布于 2017-05-30 18:10:32

你不需要python或powershell来解析Microsoft Azure的证书。

documentation描述了所需3个属性:

代码语言:javascript
运行
复制
"keyCredentials": [
{
    "customKeyIdentifier": "$base64Thumbprint_from_above",
    "keyId": "$keyid_from_above",
    "type": "AsymmetricX509Cert",
    "usage": "Verify",
    "value":  "$base64Value_from_above"
}],

  • $base64Thumbprint是证书的sha1散列的base64编码(在der format)
  • $keyid中,guuid
  • $base64Value只是一个随机base64 )是整个证书(采用der格式)的

编码

生成证书

生成自签名证书(使用rsa 2048的x509)

代码语言:javascript
运行
复制
$ openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

计算base64指纹

代码语言:javascript
运行
复制
$ openssl x509 -outform der -in certificate.crt | openssl dgst -binary -sha1 | openssl base64

计算base64

代码语言:javascript
运行
复制
$ openssl x509 -outform der -in certificate.crt | openssl base64 -A

随机生成uuid

代码语言:javascript
运行
复制
$ python -c "import uuid; print(uuid.uuid4())"

我对比了用powershell生成的结果,结果是相同的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33638246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档