开发者社区> 问答> 正文

如何在不直接访问私钥的情况下创建x x .509证书?

使用HSM时,我可以下载RSA 4096的公钥,还可以使用HSM使用相应的私钥加密blob(我无法下载)。 我试图找到一个关于如何使用HSM api来自己构建X509证书的参考。我可以在python中找到下面的示例,总结openssl库。 它几乎做了所有的,但是

from OpenSSL import crypto, SSL
from socket import gethostname
from pprint import pprint
from time import gmtime, mktime

CERT_FILE = "selfsigned.crt"
KEY_FILE = "private.key"

def create_self_signed_cert():

    # create a key pair
    k = crypto.PKey()
    k.generate_key(crypto.TYPE_RSA, 1024)

    # create a self-signed cert
    cert = crypto.X509()
    cert.get_subject().C = "UK"
    cert.get_subject().ST = "London"
    cert.get_subject().L = "London"
    cert.get_subject().O = "Dummy Company Ltd"
    cert.get_subject().OU = "Dummy Company Ltd"
    cert.get_subject().CN = gethostname()
    cert.set_serial_number(1000)
    cert.gmtime_adj_notBefore(0)
    cert.gmtime_adj_notAfter(10*365*24*60*60)
    cert.set_issuer(cert.get_subject())
    cert.set_pubkey(k)
    cert.sign(k, 'sha1')

    open(CERT_FILE, "wt").write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert))
    open(KEY_FILE, "wt").write(crypto.dump_privatekey(crypto.FILETYPE_PEM, k))

create_self_signed_cert()

大多数情况下,我希望能够替换这条线

   cert.sign(k, 'sha1')

通过相应的调用我的HSM的api与“导出”的结构“cert”。这可能吗? 问题来源StackOverflow 地址:/questions/59381651/how-to-create-x-x-509-certificate-without-direct-access-to-the-private-key

展开
收起
kun坤 2019-12-28 13:42:54 484 0
1 条回答
写回答
取消 提交回答
  • 因此,经过一天的研究,我找到了一个在证书上添加签名的令人满意的答案。虽然似乎有一些关于如何使用pyasn1通过Python构建证书的Python示例,但是最健壮的似乎是在java中使用boucycastle库的那些。我还找到了一个强有力的答案,如何把它与openssl在这里如何生成证书,如果私钥是在HSM?(主要是第3点和第4点),但这种方法远远超出了我的能力。

    2019-12-28 13:43:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载