【问题标题】:Create CSR and self-signed-certificate with pyOpenSSL使用 pyOpenSSL 创建 CSR 和自签名证书
【发布时间】:2017-09-17 01:52:39
【问题描述】:

使用我要创建的 pyOpenSSL

  1. 自签名密钥对
  2. 证书签名请求 (csr)
  3. 自签名证书

当我使用 openSSL 命令行工具时,我使用了以下命令:

  1. 用于自签名的密钥对

    openssl genrsa -out pkey.pem 2048

    openssl rsa -in pkey.pem -out public-pkey.pem -outform PEM -pubout

  2. 证书签名请求 (csr)

    openssl req -new -key pkey.pem -subj "/C=US/O=XXX/CN=XXX" -days 365 -out csrrequest.csr

  3. 自签名证书

    openssl x509 -in csrrequest.csr -req -signkey pkey.pem -days 365 -set_serial 0x12345 -sha256 -out selfsignedcert.pem

这可行!服务器接受自签名证书并返回服务器签名证书。

对于 pyOpenSSL,我使用以下代码:

  1. 用于自签名的密钥对

    psec = crypto.PKey()

    psec.generate_key(crypto.TYPE_RSA, 2048)

  2. 证书签名请求 (csr)

    csrrequest = crypto.X509Req()

    csrrequest.get_subject().C = "US"

    csrrequest.get_subject().O = "XXX"

    csrrequest.get_subject().CN = "XXX"

    csrrequest.set_pubkey(psec)

  3. 自签名证书

    selfsignedcert = crypto.X509()

    selfsignedcert.set_serial_number(12345)

    selfsignedcert.gmtime_adj_notBefore(0)

    selfsignedcert.gmtime_adj_notAfter(365*24*60*60)

    selfsignedcert.set_subject(csrrequest.get_subject())

    selfsignedcert.set_issuer(selfsignedcert.get_subject())

    selfsignedcert.set_pubkey(csrrequest.get_pubkey())

    selfsignedcert.sign(psec, "sha256")

这不起作用! 服务器不接受自签名证书。服务器无法签署并返回服务器签署的证书。

但是,通过使用 pyOpenSSL,我错过了 openssl x509 -in csrrequest.csr -req 用于创建自签名证书的输入...

我的错在哪里?有谁知道我做错了什么??

谢谢!

【问题讨论】:

标签: ssl openssl tls1.2 csr pyopenssl


【解决方案1】:

您需要使用私钥对 CSR 进行签名(类似于自签名证书,但 CA 会在最终证书中将这个签名替换为自己的签名)。

试试csrrequest.sign(psec,"sha256")

【讨论】:

  • 请详细点?
  • 非常好,对我有用(没有这一步解析时出错)!谢谢!
【解决方案2】:

是什么不工作?

我发现时间设置错了

而不是:

selfsignedcert.gmtime_adj_notBefore(0)

selfsignedcert.gmtime_adj_notAfter(365*24*60*60)

如果你尝试了会怎样

current_ts = int(datetime.datetime.now().timestamp())

selfsignedcert.gmtime_adj_notBefore(current_ts)

selfsignedcert.gmtime_adj_notAfter(current_ts + 365*24*60*60)

【讨论】:

    猜你喜欢
    • 2013-02-05
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    相关资源
    最近更新 更多