AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 941883
Accepted
JazzCat
JazzCat
Asked: 2018-11-28 10:41:24 +0800 CST2018-11-28 10:41:24 +0800 CST 2018-11-28 10:41:24 +0800 CST

OpenSSL 生成具有字节序、编码和字符集的证书

  • 772

我在使用 openssl 命令行工具创建证书时遇到了一些问题。

私钥的规格是:

“使用带有 SHA-1 散列函数 (RSA-SHA1-1024) 的 RSA 1024 位密钥的数字签名”

创建如下

openssl genrsa -out rsa.key 1024

生成 CSR

openssl req -new -key rsa.key -out csr.csr

该证书具有以下规格:

  • 格式 = x.509
  • 字符集 = UTF-8
  • 编码 = Base-64
  • 字节序 = 小字节序
  • OAEP 填充 = PKCS1 v1.5 填充
  • 私钥大小 = 1024 位
  • 哈希消息格式 = SHA-1

我已经尝试了以下的大量组合:

openssl x509 -req -utf8 -enc base64 -pkcs -sha1 rsa:1024 -in csr.csr -signkey rsa.key -out server.crt

我根本无法使上述命令的大量组合起作用,总是有一些参数会破坏它。

根据规范,我们应该使用给定的证书签署 RSA 消息摘要。我有点困惑为什么以及如何我们应该这样做,也许它是一个错误的规范?

签约 规范文件

我正在使用OpenSSL 1.1.0f 2017 年 5 月 25 日

我什至找不到如何使用 openssl 命令行工具设置它的字节序,这里的任何帮助将不胜感激!

openssl
  • 1 1 个回答
  • 4301 Views

1 个回答

  • Voted
  1. Best Answer
    Ryan Bolger
    2018-12-01T09:50:50+08:002018-12-01T09:50:50+08:00

    除非我读错了,否则该文档似乎自相矛盾。它谈到了证书的创建和自签名证书是可以的,但后来又说他们希望你发送给 NTA 的唯一东西就是公钥。签署数据不需要证书,只需要私钥。所以我想知道为什么他们不只是让你创建一个公钥/私钥对,而不是一个只会放在盒子上并且永远不会被使用的整个证书。

    以下是创建简单 RSA 1024 私钥并将公钥提取到其自己的文件中的方法:

    openssl genrsa -out rsa.key 1024
    openssl rsa -in rsa.key -outform PEM -pubout -out rsa.pub
    

    该rsa.pub文件是您要发送给 NTA 的文件。我从来没有听说过有人需要用 openssl 明确地处理字节顺序。所以我可能是错的,但你可能不必担心。UTF8 字符集可能只对带有像主题这样的文本字段的实际证书很重要。Openssl 使用 ASCII 编码输出 PEM 文件,这很好(并且正常),因为 PEM 是 Base64 编码的。PKCS1 v1.5 填充也是标准的。

    所以现在你已经拿到了你的钥匙。让我们尝试签署他们文档第 2.2.5 节中的示例数据。首先,将数据放入文件中,以便在示例中使用。

    echo -n 'signature_from_previous_receipt;2014-01-24;23:59:59;123456789;1250.00;1000.00' > data.txt
    

    显示 SHA1 哈希只是为了证明我们有与示例匹配的数据

    openssl dgst -sha1 data.txt
    

    对数据进行散列和签名,将其转换为 base64,不带换行符并将其保存到文件中。

    openssl dgst -sha1 -sign rsa.key data.txt | openssl base64 -A -out data.sig
    

    假设,其中的文本data.sig现在就是您在示例中用于“signature_for_this_receipt”的内容。

    要验证,我们可以执行以下操作,输出“验证成功”。

    openssl dgst -sha1 -verify rsa.pub -signature <(openssl base64 -d -A -in data.sig) data.txt
    

    如果由于某种原因您确实需要一个实际的证书文件,您可以将生成私钥的第一个命令替换为这个将生成密钥和自签名证书的衬里。您仍然需要相同的第二个命令来提取公钥。

    openssl req -nodes -x509 -sha1 -utf8 -newkey rsa:1024 -keyout rsa.key -out server.crt -days 365 -subj "/CN=MyCert"
    
    • 3

相关问题

  • 如何在 Mac OS X 服务器上安装替换 SSL 证书?

  • 在 LAMPP 中升级单个库(特别是 openssl)

  • 带有基于商业 CA 的客户端证书的 ssl_error_handshake_failure_alert

  • 我可以对 *.domain.com 和 domain.com 使用相同的通配符认证吗

  • 为 apache 生成自签名 SSL 证书

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve