使用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
因此,经过一天的研究,我找到了一个在证书上添加签名的令人满意的答案。虽然似乎有一些关于如何使用pyasn1通过Python构建证书的Python示例,但是最健壮的似乎是在java中使用boucycastle库的那些。我还找到了一个强有力的答案,如何把它与openssl在这里如何生成证书,如果私钥是在HSM?(主要是第3点和第4点),但这种方法远远超出了我的能力。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。