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

问题[openssl](unix)

Martin Hope
eftshift0
Asked: 2025-02-27 02:02:24 +0800 CST

openssl - 使用中间 CA 的问题

  • 8

我正在尝试了解如何使用中间 CA 证书来唱歌。我已经开发了一个相当简单的示例(使用https://gist.github.com/jadbaz/9350f4df4e4ef4c5d256889aa3d5a5ed作为基础,尽管我删除了配置文件并相应地调整了一些命令)...我希望最终证书可以使用我在执行期间创建的 2 个 CA 中的任何一个进行验证,但验证失败....我遗漏了什么:

# root ca
openssl genrsa -out rootca.key 4096
openssl req -sha256 -new -x509 -days 3650 -key rootca.key -out rootca.crt -subj /CN=rootca

# intermediate ca
openssl genrsa -out interca1.key 4096
openssl req -sha256 -new -key interca1.key -out interca1.csr -subj /CN=intermediateca -addext "basicConstraints=critical,CA:true" -addext "keyUsage=critical,keyCertSign,cRLSign"
openssl x509 -copy_extensions copyall -req -days 365 -in interca1.csr -CA rootca.crt -CAkey rootca.key -CAcreateserial -out interca1.crt

# verify chain so far
openssl verify -CAfile rootca.crt rootca.crt interca1.crt # both certificates are ok

# generating an example certificate
openssl genrsa -out example1.key 2048
openssl req -new -sha256 -key example1.key -out example1.csr -subj /CN=example1
openssl x509 -copy_extensions copyall -req -days 365 -in example1.csr -CA interca1.crt -CAkey interca1.key -CAcreateserial -out example1.crt

# verify results
openssl verify -CAfile rootca.crt rootca.crt interca1.crt example1.crt
openssl verify -CAfile interca1.crt interca1.crt example1.crt

这是最后一次验证运行的输出:

# openssl verify -CAfile rootca.crt rootca.crt interca1.crt example1.crt
rootca.crt: OK
interca1.crt: OK
CN=example1
error 20 at 0 depth lookup: unable to get local issuer certificate
error example1.crt: verification failed
# openssl verify -CAfile interca1.crt interca1.crt example1.crt
CN=intermediateca
error 20 at 0 depth lookup: unable to get local issuer certificate
error interca1.crt: verification failed
CN=intermediateca
error 2 at 1 depth lookup: unable to get issuer certificate
error example1.crt: verification failed

我错过了什么?

而且,为什么不能用interca1同样的方式验证自己rootca呢?

我正在使用 openssl 3.2.2。

更新

在接受的答案中没有对此进行解释,但让我添加一个命令,如果您想尝试的话,该命令应该可以工作:

$ openssl verify -CAfile <( cat rootca.crt interca1.crt ) rootca.crt interca1.crt example1.crt
rootca.crt: OK
interca1.crt: OK
example1.crt: OK
openssl
  • 1 个回答
  • 125 Views
Martin Hope
eftshift0
Asked: 2025-02-26 16:29:04 +0800 CST

openssl - 是否可以使用 openssl 3.2 生成 V1 x.509 ca 证书?

  • 6

在 openssl 3.0.7 中,我可以在 openssl-ca 手册页中看到这一点:

       -extensions section
           The section of the configuration file containing certificate extensions to be added when a certificate is issued (defaults to x509_extensions unless the
           -extfile option is used).  If no X.509 extensions are specified then a V1 certificate is created, else a V3 certificate is created.  See the
           x509v3_config(5) manual page for details of the extension section format.

但是在 openssl 3.2.2 中,它没有提及 V1:

       -extensions section
           The section of the configuration file containing certificate extensions to be added when a certificate is issued (defaults to x509_extensions unless the
           -extfile option is used).

           See the x509v3_config(5) manual page for details of the extension section format.

是否不再可能生成使用 V1 的证书?

openssl
  • 1 个回答
  • 25 Views
Martin Hope
Janning
Asked: 2025-01-01 01:23:39 +0800 CST

如何使用 OpenSSL 使用 Yubikey 加密文件

  • 7

我尝试在 Linux 上使用 Yubkey 和 openssl 加密文件。我的 YubiKey 是一个

  idProduct          0x0407 Yubikey 4/5 OTP+U2F+CCID
  bcdDevice            5.24

首先我从我的 yubikey 中提取我的公钥:

 pkcs15-tool --read-public-key 01 -o pubkey

我得到一个内容如下的文件:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZ[...]WpqK
qezLU6KBlk9[...]eRDFZEkvptllFFkw==
-----END PUBLIC KEY-----

当我尝试使用此公钥加密文件时出现错误:

openssl pkeyutl -encrypt -pubin -inkey pubkey -in file -out file.enc 
pkeyutl: Error initializing context
40A7F0A3DA720000:error:03000096:digital envelope routines:evp_pkey_asym_cipher_init:operation not supported for this keytype:../crypto/evp/asymcipher.c:189:

我最近换了一个 yubikey。之前我有一个 epass2000,也是这样用的。我在网上找不到任何关于 yubikey 的正确文档。

如何使用 openssl 和 yubikey 加密文件?

openssl
  • 1 个回答
  • 34 Views
Martin Hope
floupinette
Asked: 2024-10-30 21:53:26 +0800 CST

中级 CA 证书在哪里?

  • 9

在文件夹中/etc/ssl/certs/我可以看到:

  • 证书的符号链接存储在/usr/share/ca-certificates/
  • ca-certificates.crt包含所有 PEM 格式证书的BUNDLE 文件

我只看到根 CA 证书...我没有看到中间 CA 证书?为什么?

例如,使用 Let's encrypt CA,我可以找到:

  • ISRG_Root_X1.pem
  • ISRG_Root_X2.pem

但是 Let's encrypt 中间证书在哪里? 在我写这个问题的时候,有 4 个中间 CR 证书:

  • E5
  • E6
  • R10
  • R11

我猜想我的电脑上某个地方有这个,因为我可以成功与服务器建立 SSL 连接(使用 let's encrypt 证书)。

openssl
  • 2 个回答
  • 511 Views
Martin Hope
SSLv5
Asked: 2024-08-08 18:57:54 +0800 CST

当没有可用的 CSR 或私钥时,如何仅使用公钥(PEM 格式)使用 OpenSSL 创建 X.509 证书?

  • 5

如何仅使用公钥使用 OpenSSL 创建 X.509 证书?

在这种情况下,我只有待认证的公钥(PEM 格式),我需要从中创建 X.509 证书。此给定公钥应位于X.509 证书中。待认证公钥的SubjectPublicKeyInfo私钥在此情况下不可用!

但是,当然,用于签署证书的颁发者(CA) 密钥是可用的,包括私钥。我知道我需要私钥来签署证书 😏

现在,我明白了待认证的公钥通常包装在 CSR 中。并且 CSR 通常由待认证公钥的私钥签名。但是,如前所述,我这里没有CSR,只有“普通”待认证公钥。从技术上讲,这根本不是问题。但是 OpenSSL 能以这种方式创建 X.509 证书吗?

我发现最接近的是:

openssl x509 -new -key ca_key.pem -force_pubkey tbs_pubkey.pem -subj "/CN=Test"

不幸的是,上述命令生成了一个看起来像“自签名”的证书,其中包含来自的公钥,tbs_pubkey.pem并由来自的私钥签名ca_key.pem,因此生成的“自签名”证书的签名实际上是无效的……☹️

openssl
  • 1 个回答
  • 40 Views
Martin Hope
David Tonhofer
Asked: 2024-06-17 23:19:57 +0800 CST

可能有点问题:“openssl x509”有时将序列号显示为八位字节字符串,有时显示为整数

  • 15

我注意到,openssl x509 -in $FILE -text有时会显示X.509 证书的序列号(一个最多 20 字节的正整数,因此最高有效位为 0),有时会显示为“八位字节字符串”,有时会显示为整数,后面跟着十六进制表示形式。

例如,这是“Letsencrypt”链中证书的序列号(16 字节序列号,但 MSB 为 1,有什么问题吗?):

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            91:2b:08:4a:cf:0c:18:a7:53:f6:d6:2e:25:a7:5f:5a
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Internet Security Research Group, CN=ISRG Root X1

这是来自系统“证书包”的证书(8 字节序列号,MSB 为 0)

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 6828503384748696800 (0x5ec3b7a6437fa4e0)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: CN=ACCVRAIZ1, OU=PKIACCV, O=ACCV, C=ES

来自同一捆绑包的另一个(16 字节序列号,MSB 为 0):

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            0c:e7:e0:e5:17:d8:46:fe:8f:e5:60:fc:1b:f0:30:39
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Assured ID Root CA

证书QuoVadis Root CA 2(2字节序列号):

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1289 (0x509)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=BM, O=QuoVadis Limited, CN=QuoVadis Root CA 2

这是一个具有 9 字节序列号的序列号(MSB 正确为 0):

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            11:00:34:b6:4e:c6:36:2d:36
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=RO, O=CERTSIGN SA, OU=certSIGN ROOT CA G2

另一个来自同一提供商的证书带有 6 字节序列号:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 35210227249154 (0x200605167002)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=RO, O=certSIGN, OU=certSIGN ROOT CA

看起来有点随机。打印序列号有两种方式有什么特殊意义吗?

openssl
  • 1 个回答
  • 794 Views
Martin Hope
John Smith
Asked: 2024-02-17 00:14:01 +0800 CST

如何以非交互方式(从脚本)验证与 openssl 的 ssl / tls 连接?

  • 8

当我执行时:

openssl s_client -connect google.com:443
openssl s_client -connect government.ru:443

这给了我有价值的输出,但我想openssl关闭连接并退出返回一个整数退出代码(不同),以便我可以这样做

echo "Domain?";read d
openssl s_client -connect "$d":443

if [[ "$?" -eq 0 ]]; then
  echo "Encrypted"; do_sth
else 
  echo "Plain."; do_sth_else
fi

openssl
  • 2 个回答
  • 70 Views
Martin Hope
Black
Asked: 2022-09-21 01:19:33 +0800 CST

CA 捆绑包中是否包含私钥?

  • 0

您可以在下面从我们的一个域中看到我的 apache2 虚拟主机 SSL 配置,效果很好:

    ...

    # Example SSL configuration
    SSLEngine on
    #SSLProtocol all -SSLv2
    #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
    SSLCertificateFile "/etc/ssl/certs/company/cert"
    SSLCertificateKeyFile "/etc/ssl/certs/company/key"
    SSLCertificateChainFile "/etc/ssl/certs/company/ca-bundle"

    ...

我需要升级另一个网站以使其使用 SSL。

但是我们的IT部门只给了我cert和ca-bundle,他们说私钥包含在ca-bundle

所以我试图省略“SSLCertificateKeyFile”,但它仍然不能以这种方式工作。

那么私钥真的包含在 CA 包中吗?

我读过它可以包含在证书本身中,但非常不鼓励这样做。

“最后,终端实体证书的私钥也可以添加到证书文件中,而不是使用单独的 SSLCertificateKeyFile 指令。这种做法是非常不鼓励的。如果使用它,则必须在证书之后配置使用这种嵌入密钥的证书文件“

文档

openssl certificates
  • 1 个回答
  • 31 Views
Martin Hope
Kobby
Asked: 2022-09-17 20:30:01 +0800 CST

为什么我的 10 个随机字节的文件大于 10 个字节?

  • -2

所以我使用命令生成了一个 10 字节的随机字符串openssl rand -hex 10 > result。我的问题是为什么生成的文件有 21 个字节的大小?我没有加密,所以我不期待任何形式的填充。

string openssl
  • 1 个回答
  • 49 Views
Martin Hope
TwoFingerRightClick
Asked: 2022-06-07 16:46:00 +0800 CST

如何启用非默认 OpenSSL 密码套件

  • 1

我根据 Ubuntu 20.04 安装了 OpenSSL 1.1.1f,我特别希望启用TLS v1.2 套件TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8( )。ECDHE-ECDSA-AES128-CCM8

TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 可用

如何配置 OpenSSL 以允许将该密码套件用于其他使用 OpenSSL 安装的 TLS 应用程序?

关于我的用例的详细信息:我有一个 .NET(6) 应用程序,并且.NET 使用当前的 OpenSSL 1.1.1 或更高版本安装作为Linux 上的底层 TLS 提供程序。因此,当该应用程序使用 OpenSSL 时,需要将 OpenSSL 配置为允许 CCM 密码套件。(它将使用openssl.cnfas per openssl version -d)

我在 OpenSSL 手册的配置部分看到我有兴趣配置的模块是ssl_conf,因此我创建了以下 cnf:

openssl_conf = default_conf

[default_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
CipherString = ECDHE-ECDSA-AES128-CCM8                                                                                                                                                                                                                                                                                                                                              

但这不允许应用使用 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8。当我的 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 独占客户端尝试连接时,它会出现握手 40 失败,因为应用程序内部会抛出一个'Interop.OpenSsl.SslException' in System.Net.Security.dll

但是,我确认此配置文件有效,因为如果我使用以下 cnf 而不是 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 作为密码字符串中的唯一过滤器,那么应​​用程序可以专门使用 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 并且它可以按预期工作(...GCM_SHA256 专用客户端可以连接) :

...
[system_default_sect]
CipherString = ECDHE-RSA-AES128-GCM-SHA256  

如何启用 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8?

而且我不确定如何确认 CCM 的启用...我希望当我运行openssl ciphers -v(没有密码字符串过滤器)时,我会看到 CCM8 被列出,就像 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 被列出一样。

我阅读了这本烹饪书的配置部分:https ://www.feistyduck.com/library/openssl-cookbook/online/openssl-command-line/configuration.html ,但我认为我需要一些有经验的建议来解释为什么我不能只使用 CCM8。

openssl
  • 1 个回答
  • 997 Views

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve