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
    • 最新
    • 标签
主页 / computer / 问题

问题[openssl](computer)

Martin Hope
Danilo Piazzalunga
Asked: 2025-04-15 23:50:47 +0800 CST

如何从 .p7m CAdES 文件中提取内容?

  • 6

我有一个.p7m文件(由 UNIXfile命令标识为DER Encoded PKCS#7 Signed Data),我想提取解开其内容。

我没有签名(公共)密钥,因为我不需要验证它的签名:我只需要解开它。

我该如何实现这一点,最好使用像 OpenSSL 这样的命令行工具?

openssl
  • 1 个回答
  • 88 Views
Martin Hope
Alexander Ites
Asked: 2024-07-10 19:17:56 +0800 CST

是否可以通过 OpenSSL 将 PCKS#12 (p12) 证书转换为纯文本以读取颁发者、CN 等?

  • 6

我知道可以按照以下方式使用 OpenSSL 将 PEM(x509)证书转换为纯文本:

openssl x509 -in some.pem -text

但是我找不到 openssl pkcs12 命令的 -text 选项。到目前为止,我发现最接近的选项是 -info 选项,但它的输出信息量远不如 x509 -text 选项。

PKCS#12 证书文件是否存在某些限制,不允许获取纯文本信息?

openssl
  • 1 个回答
  • 20 Views
Martin Hope
JeanMarc
Asked: 2024-03-13 14:29:05 +0800 CST

OpenSSL CSR 在自定义属性值中添加前缀

  • 6

我正在创建一个 OpenSSL 配置,该配置应有助于生成 Hyperledger Fabric Identity 和 TLS 证书的证书签名请求(我们不能在我们的组织中使用 Fabric CA)。我当前的配置生成如下 CSR:

openssl req -in ecdsa_ident_req.pem -text -noout
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C=NL, L=RD, OU=ll, CN=33
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:d2:5b:38:77:b4:8e:1d:97:ab:fa:82:8a:5b:5e:
                    8f:d5:f4:8f:5a:7e:fb:0b:c1:1e:15:31:cf:e6:47:
                    9c:91:ce:5d:2b:9d:6b:7c:91:a9:ba:35:3f:7c:5c:
                    d9:a4:5d:d9:51:6e:65:73:a0:b3:c9:79:af:85:90:
                    a6:19:4e:76:f5
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        Attributes:
            Requested Extensions:
                X509v3 Basic Constraints: critical
                    CA:FALSE
                X509v3 Key Usage:
                    Digital Signature, Non Repudiation
                1.2.3.4.5.6.7.8.1:
                    .l{"attrs":{"abac.init":"true","admin":"true","hf.Affiliation":"","hf.EnrollmentID":"Admin","hf.Type":"user"}}
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
...

令人意想不到的是.l属性值中的前缀1.2.3.4.5.6.7.8.1。

我需要在设置中进行哪些更改才能将值设置为不带该.l前缀的 JSON 字符串。

我使用的是openssl版本

OpenSSL 3.2.1 30 Jan 2024 (Library: OpenSSL 3.2.1 30 Jan 2024)

我使用生成的 CSR

export ISHARE_ATTRS="{\"attrs\":{\"abac.init\":\"true\",\"admin\":\"true\",\"hf.Affiliation\":\"\",\"hf.EnrollmentID\":\"Admin\",\"hf.Type\":\"user\"}}"
openssl req -config ./openssl.cnf -new -newkey ec:ec_param.pem -section req_ecdsa_identity_admin -keyout ecdsa_ident_key.pem -out ecdsa_ident_req.pem

其内容opensll.cnf是:

# Barebones openssl configuration that can be used to generate CSRs for
# - iSHARE Satellite Identity/Enrollment certificates
# - iSHARE Satellite TLS certificates

# Resources/documentation
# - https://www.openssl.org/docs/man3.0/man5/config.html

openssl_conf = openssl_init

[ openssl_init ]
alg_section = evp_properties
engines = engines
oid_section = OID
providers = providers
random = random
ssl_conf = ssl_configuration

[ engines ]

[ evp_properties ]

[ OID ]
iShareAttributesExtension = 1.2.3.4.5.6.7.8.1

[ providers ]

[ random ]

[ ssl_configuration ]
server = tls_server_config
client = tls_client_config
system_default = tls_system_default

[ tls_client_config ]
# configuration for SSL/TLS clients
RSA.Certificate = client-rsa.pem
ECDSA.Certificate = client-ecdsa.pem

[ tls_server_config ]
# configuration for SSL/TLS servers
RSA.Certificate = server-rsa.pem
ECDSA.Certificate = server-ecdsa.pem

[ tls_system_default ]
MinProtocol = TLSv1.2
MinProtocol = DTLSv1.2

[ req_dn_identity ]
countryName              = Country Name (2 letter code)
countryName_default      = NL
countryName_min          = 2
countryName_max          = 2
localityName             = Locality Name (eg, city)
organizationalUnitName   = Organizational Unit Name (eg, section)
commonName               = Common Name (eg, YOUR name)
commonName_max           = 64

[ req_dn_tls ]
countryName              = Country Name (2 letter code)
countryName_default      = NL
countryName_min          = 2
countryName_max          = 2
localityName             = Locality Name (eg, city)
organizationalUnitName   = Organizational Unit Name (eg, section)
commonName               = Common Name (eg, hostname)
commonName_max           = 64

[ req_ecdsa_identity_admin ]
distinguished_name = req_dn_identity
req_extensions = x509v3_identity

[ req_ecdsa_identity_user ]
distinguished_name = req_dn_identity
req_extensions = x509v3_identity

[ req_ecdsa_identity_peer ]
distinguished_name = req_dn_identity
req_extensions = x509v3_identity

[ req_ecdsa_identity_orderer ]
distinguished_name = req_dn_identity
req_extensions = x509v3_identity

[ req_ecdsa_tls ]
distinguished_name = req_dn_tls
req_extensions = x509v3_ecdsa_tls

[ req_rsa_tls ]
distinguished_name = req_dn_tls
default_bits = 4096
req_extensions = x509v3_rsa_tls

[ x509v3_identity ]
basicConstraints = critical, CA:FALSE
keyUsage = digitalSignature,nonRepudiation
iShareAttributesExtension = ASN1:UTF8String:$ENV::ISHARE_ATTRS

[ x509v3_ecdsa_tls ]
basicConstraints = critical, CA:FALSE
keyUsage = keyEncipherment, dataEncipherment, keyAgreement
extendedKeyUsage = clientAuth, serverAuth

[ x509v3_rsa_tls ]
basicConstraints = critical, CA:FALSE
keyUsage = keyEncipherment, dataEncipherment, keyAgreement
extendedKeyUsage = clientAuth, serverAuth

openssl
  • 1 个回答
  • 18 Views
Martin Hope
Lars Kristensen
Asked: 2023-06-14 18:51:42 +0800 CST

生成没有基本约束的证书

  • 5

业务合作伙伴需要客户端证书才能访问他们的某些 API。

我使用以下命令使用 OpenSSL 生成了一个证书:

openssl req -x509 -newkey rsa:4096 -keyout mykey.pem -out mycert.pem -sha256 -days 365

业务合作伙伴说证书包含证书的“基本约束”部分中的内容,并且证书需要完全没有基本约束。他们还向我展示了一张有效证书的屏幕截图,该证书没有任何基本限制。

我尝试添加参数-addext "basicConstraints=CA:FALSE,pathlen:0",但这生成了一个包含其中两个部分的证书,看起来它可能无效:

包含两个基本约束部分的证书屏幕截图。

如何在没有基本约束部分的情况下生成客户端证书?

openssl
  • 1 个回答
  • 23 Views
Martin Hope
Nidal K I
Asked: 2023-02-16 20:58:43 +0800 CST

如何将私钥 (.key) 文件关联到 ssl 证书(来自 GoDaddy)以在 IIS 上安装

  • 7

我从 GoDaddy 下载了 ssl 证书文件,其中包含 .pem 文件、.crt 文件和 .p7b 文件。我有一个以 .key 扩展名生成的私钥。我需要将相同的分配给从 Godaddy 收到的证书,并在 IIS 证书中安装相同的证书。

我已经从 .crt sslcertificate.cer 创建了 .cer 文件

问题实际上是,当我使用“完整证书请求”选项在 IIS 中安装证书并添加它在证书列表中显示的详细信息时。但是当刷新或转到其他选项并返回到证书列表时,我看不到刚刚添加的新证书,它消失了。

通过谷歌搜索,我可以理解问题是由于私钥与证书无关。当我检查证书本身时,我发现没有显示钥匙图标。我尝试通过 openssl 命令添加以使其成为还附加了密钥的 p12K 文件,但“其结果是需要密码”并根据搜索结果退出命令行,它应该要求输入密码(我怀疑是否有密码已经在该密钥文件或其他文件中设置)。我也尝试过 certutil -repairstore 我的“序列号”命令,但它要求连接智能设备。

这是尝试创建 .pfx 文件时得到的结果

首先,我尝试创建一个新密钥,因为这个私钥是一个旧密钥,并且在创建时不确定是否有人在其中输入了密码,这就是密码询问的原因。所以我创建了一个新的密钥文件“newkey.key”并尝试用它制作 .pfx 文件,但它显示这个密钥不是与 .cer/crt 文件关联的正确密钥。然后我尝试从我收到的 pem 文件创建一个 .key 文件,但它仍然说无法从 pem 文件中检索数据

openssl
  • 1 个回答
  • 18 Views
Martin Hope
Adam Howell
Asked: 2022-11-29 17:18:33 +0800 CST

我的 OpenSSL 证书因 Mosquitto 而失败

  • 5
这个问题是从 Information Security Stack Exchange迁移过来的,因为它可以在 Super User 上回答。 7 天前迁移 。

我正在尝试使用 StackOverflow 答案中的步骤自动创建证书。
这些是我正在尝试的命令:

  1. openssl genrsa -des3 -out ca.key 2048
  2. openssl req -new -key ca.key -out ca-cert-request.csr -sha256
  3. openssl x509 -req -in ca-cert-request.csr -signkey ca.key -out ca-root-cert.crt -days 365 -sha256
  4. openssl genrsa -out server.key 2048
  5. openssl req -new -key server.key -out server-cert-request.csr -sha256
  6. openssl x509 -req -in server-cert-request.csr -CA ca-root-cert.crt -CAkey ca.key -CAcreateserial -out server.crt -days 360

在第 2 步中,我将 Common Name 留空。在第 5 步中,我尝试localhost使用通用名称的实际主机名。

当我运行mosquitto_pub -h localhost -t mqttsTest42 -p 8883 -m testMessage --cafile "C:\Certificates\ca-root-cert.crt" --cert "C:\Certificates\server.crt" --key "C:\Certificates\server.key"它输出这个:

Connection error: Connection Refused: not authorised.
Error: The connection was refused.

如果我手动运行 Mosquitto,它会给出:

C:\Program Files\mosquitto>mosquitto -c mosquitto.conf -v
1669685112: mosquitto version 2.0.14 starting
1669685112: Config loaded from mosquitto.conf.
1669685112: Opening ipv6 listen socket on port 8883.
1669685112: Opening ipv4 listen socket on port 8883.
1669685112: mosquitto version 2.0.14 running
1669685121: New connection from ::1:49375 on port 8883.
1669685121: Sending CONNACK to auto-7484C261-71E1-F653-3807-74471901380A (0, 5)
1669685121: Client auto-7484C261-71E1-F653-3807-74471901380A disconnected, not authorised.

我曾经与 Mosquitto 和另一位经纪人一起工作过。在我努力实现自动化的过程中,我改变了太多东西,现在甚至不能让上面最初的六个步骤为我工作了。

我目前使用的是 mosquitto 版本2.0.14和 OpenSSL 版本3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)。我已经尝试了另一个版本的 Mosquitto 和另一个版本的 OpenSSL。

我创建的批处理文件在这里。
我的 openssl.cnf 在这里。

我的 mosquitto.conf 包含这些行:

listener 8883
certfile C:\Certificates\server.crt
keyfile C:\Certificates\server.key
cafile C:\Certificates\ca-root-cert.crt

接下来我应该尝试什么?

openssl
  • 1 个回答
  • 26 Views
Martin Hope
John
Asked: 2022-08-09 12:58:53 +0800 CST

如何获取 mp4 文件或流的前 4096 个字节的 SHA1?

  • 5

我正在尝试使用命令行工具来匹配 Plex.app 为电影文件计算的哈希值(显然,它是电影第一个块(4k)而不是整个电影的 SHA1 哈希)。

我尝试使用以下命令使用命令行工具获取哈希,但不出所料,这两个哈希不匹配。

file="/path/to/mp4"
dd bs=4k count=1 if="$file" | openssl sha1
1+0 records in
1+0 records out
4096 bytes transferred in 0.000012 secs (341333333 bytes/sec)
7785d5d6d611a27ac03dfdff8a2c89e9ffeffa3b
file="/path/to/mp4"
head -c 4096< "$file" | openssl sha1
7785d5d6d611a27ac03dfdff8a2c89e9ffeffa3b

使用ffprobe我意识到该 mp4 文件开头的大部分数据是编码设置而不是视频流。让我觉得无论 Plex 使用什么进程,它都可能避免文件的编码设置,因为它们可能完全相同。

请记住,这些值与尝试复制其哈希计算的适当工具不匹配的原因可能有很多。

ffmpeg openssl
  • 2 个回答
  • 89 Views
Martin Hope
sherrellbc
Asked: 2022-04-22 08:07:34 +0800 CST

Openssl 对 DES/3DES 使用 openssl 给出奇怪的结果?

  • 6

我正在实现一个包含 DES 和 3DES 功能的支持库。作为验证步骤,我使用它openssl来检查我的结果。对于一个简单的测试,我这样做了:

echo -n "AAAAAAAA" | openssl enc -e -des-ecb -nosalt -pass pass:AABBCCDD | xxd
00000000: 2976 3faf 5e27 7187 5897 c640 c38c cf8b  )v?.^'q.X..@...

即 ECB mod、plaintext AAAAAAAA、keyAABBCCDD和 no salting。但是这里有两件事让我觉得很奇怪。

(1) 对于 64 位输入和 64 位块大小,我希望输出具有与输入相同的长度

(2) 如果我将输入加倍为 128 位(所有 A,块长度的两倍),我实际上得到 24 字节的密文

$ echo -n "AAAAAAAAAAAAAAAA" | openssl enc -e -des-ecb -nosalt -pass pass:AABBCCDD | xxd
00000000: 2976 3faf 5e27 7187 2976 3faf 5e27 7187  )v?.^'q.)v?.^'q.
00000010: 5897 c640 c38c cf8b                      X..@....

在进行最后一个实验时,我注意到密文确实在块大小边界上重复(参见2976 3faf 5e27 7187重复)。但是当达到这个阈值时,我们会得到额外的 8 个字节的密文。即,使用 7 个 A 给出 8 个字节的密文,但 8 个 A 给我们 16 个字节。所以对这个边界条件似乎有一些奇怪的处理?

无论如何,我检查了一些随机的在线 DES 工具,但没有一个与 openssl 提供的相匹配——但它们都相互匹配。从这些工具中,我认为上面第一个示例的正确密文是

54 55 ab a4 a2 b0 83 38

或者他们都以同样的方式错了。这里发生了什么?

encryption openssl
  • 1 个回答
  • 373 Views
Martin Hope
typeof programmer
Asked: 2022-02-26 12:16:05 +0800 CST

Openssl 无法解释非英文字符

  • 5

我正在使用 windows openssl 版本 3.0.1 14。问题是当文件名包含非英文字符时,它无法加密文件并出现以下错误:

C:\Users\XXX\Desktop>openssl aes-256-cbc -e -salt -in "C:\Users\XXX\Desktop\test\试试.txt" -out "C:\Users\XXX\Desktop\test\ENCRYPTING.txt" -k 12230000000000000000000000000000 -iv F1230000000000000000000000000000
Can't open "C:\Users\XXX\Desktop\test\??.txt" for reading, Invalid argument
B8280000:error:8000007B:system library:BIO_new_file:Unknown error:crypto\bio\bss_file.c:67:calling fopen(C:\Users\lishi\Desktop\test\??.txt, rb)
B8280000:error:10080002:BIO routines:BIO_new_file:system lib:crypto\bio\bss_file.c:77:

我使用的终端是windows命令提示符,我验证了这个中文文件可以在cmd中使用发出成功打开:

C:\Users\XXX\Desktop>notepad C:\Users\XXX\Desktop\test\试试.txt

我需要在 openssl 端做任何配置以支持 utf8 吗?

windows openssl
  • 1 个回答
  • 153 Views
Martin Hope
neubert
Asked: 2022-01-21 20:04:15 +0800 CST

使用 OpenSSL 从 Ed25519 私钥中提取公钥?

  • 11

Ed25519 私钥可以通过做openssl genpkey -algorithm ed25519 -outform PEM -out private.pem. 我的问题是......使用 OpenSSL 有没有办法从私钥中获取公钥?

使用 RSA 私钥,您可以做到openssl rsa -in private.pem -pubout。这给出了一个与 RFC5280 中的 SubjectPublicKeyInfo 相对应的密钥(至少它对我有用)。

但是我怎样才能获得 Ed25519 密钥的类似公钥?我想我可以用私钥生成一个 CSR 并从 CSR 中获取它,但这似乎需要做很多工作。当然,这比运行单个命令要多得多……

openssl public-key
  • 1 个回答
  • 3029 Views

Sidebar

Stats

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

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve