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 / 问题

问题[x509](server)

Martin Hope
Micha
Asked: 2021-10-27 12:52:27 +0800 CST

IMAPS 的手动证书身份验证

  • 0

我正在运行 IMAPS 服务,并且用户使用 X.509 证书进行身份验证。使用 Thunderbird 可以正常工作。但是如何使用 openssl 手动连接到 IMAPS 服务?我在 Thunderbird 中使用与openssl s_clientthan 相同的证书,但我没有经过身份验证。

$ openssl s_client -connect $myimapsserver:993 -key my.key -cert my.crt -quiet 
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = $myimapsserver
verify return:1
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=PLAIN ACL ACL2=UNION AUTH=EXTERNAL ENABLE UTF8=ACCEPT] Courier-IMAP ready. Copyright 1998-2019 Double Precision, Inc.  See COPYING for distribution information.
authentication imap ssl-certificate openssl x509
  • 1 个回答
  • 88 Views
Martin Hope
radumanolescu
Asked: 2021-09-13 08:40:15 +0800 CST

X.509 签名证书有效性

  • 0

我们正在尝试为 Kafka 服务器集群生成服务器证书,以通过 SSL 进行通信。

该程序有效,但证书的最终有效期仅为 30 天。

我们请求 365 天,并且在“步骤 1”(见下文)之后,我们有一个具有正确有效性的密钥对。见下文 (1)。

但是,在我们将签名证书导入回密钥库后,有效期已减少到 30 天。见下文 (2)。

为什么会这样,我们该如何解决?

echo "Step1: Create the server identity and keystore"
$ORACLE_JDK_1_8_0_u181_keytool -genkey -keystore keystore.p12 -alias localhost -validity 365 -keyalg RSA -deststoretype pkcs12 -ext SAN="DNS:$SERVER_NAME.corp.com,IP:1.2.3.4"

$ORACLE_JDK_1_8_0_u181_keytool -list -v -keystore keystore.p12 -storepass $KPWD
# (1) Shows validity of 365 days: correct

echo "Step2: Export the private key from the keystore to a separate file"
openssl pkcs12 -in keystore.p12 -nodes -nocerts -out $SERVER_NAME_key.pem -passin pass:$KPWD -passout pass:$KPWD

echo "Step3: Create a Certificate Signing Request (CSR)"
openssl req -new -key $SERVER_NAME_key.pem -out $SERVER_NAME.csr -passin pass:$KPWD -passout pass:$KPWD

echo "Step6 Sign the server certificate"
openssl x509 -req -in $SERVER_NAME.csr -CA CAcert.pem -CAkey CAkey.pem -CAcreateserial -out $SERVER_NAME_key_signed.pem -passin pass:$CAPD

echo "Step7: Import both the certificate of the CA and the signed certificate into the keystore."
$ORACLE_JDK_1_8_0_u181_keytool -keystore keystore.p12 -alias CARoot -import -file CAcert.pem -storepass $KPWD
$ORACLE_JDK_1_8_0_u181_keytool -keystore keystore.p12 -alias localhost -import -file $SERVER_NAME_key_signed.pem -storepass $KPWD
$ORACLE_JDK_1_8_0_u181_keytool -list -v -keystore keystore.p12 -storepass $KPWD
# (2) Shows validity of 30 days: WRONG. WHY?
certificate x509
  • 1 个回答
  • 36 Views
Martin Hope
Yan Foto
Asked: 2020-12-29 08:39:04 +0800 CST

为什么在没有明确的根声明的情况下,在 NGINX 上为“购买通行证”DV 证书装订的 OCSP 会失败?

  • 2

tl;博士

对于 certbot 获取的 buypass DV 证书,我需要明确告诉 NGINX 信任 buypass 根证书以启用 OCSP 装订。Let's Encrypt 证书不是这种情况,我不知道为什么。我找到了一种方法(见下文),它看起来更像是一种解决方法,而不是一种可靠的解决方案。所以我想知道我是否在这里做错了什么?


细节

我注意到,对于通过 ACME 协议(通过certbot )获取的 buypass.com DV 证书( GO SSL ), NGINX 无法提供开箱即用的 OCSP,即使这样的配置与 Let's Encrypt 证书完美配合:

ssl_stapling on;
ssl_stapling_verify on;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot

我需要生成一个包含根证书(Buypass_Class_2_Root_CA.pem)的新链:

cp /etc/letsencrypt/live/example.com/
cat /etc/ssl/certs/Buypass_Class_2_Root_CA.pem fullchain.pem > ocsp-chain.pem

并明确指示 NGINX 信任该链:

ssl_trusted_certificate /etc/letsencrypt/live/example.com/ocsp-chain.pem;

让我感到困惑的是,我不必为 Let's Encrypt 证书执行此操作,并且 NGINX 设法提供装订的 OCSP而无需生成额外的ocsp-chain.pem.


更多细节(更新)

只是通过以下方式对生成的信任链进行了一些澄清certbot:

对于购买通行证:

/--------- fullchain.pem ---------\    /--- /etc/ssl/certs --\
example.com -> Buypass_Class_2_CA_5 -> Buypass_Class_2_Root_CA
               \---- chain.pem ---/

对于让我们加密:

/--------- fullchain.pem --------\    / /etc/ssl/certs \
example.com -> Lets_Encrypt_R3.pem -> DST_Root_CA_X3.pem
               \---- chain.pem ---/

如果我运行以下命令:

cd /etc/letsencrypt/live/example.com
# $OSCP_URL is:
#   * Let's Encrypt: http://r3.o.lencr.org
#   * Buypass:       http://ocsp.buypass.com
openssl ocsp -issuer chain.pem -cert fullchain.pem -url "${OCSP_URL}"

我明白了Response verify OK。尽管如此,尽管在信任所有锚点的幕后nginx 使用openssl/etc/ssl/certs(在我的情况下/usr/lib/ssl/certs -> /etc/ssl/certs),但如果没有上述解决方法,它无法验证 OCSP:

2611#2611: OCSP_basic_verify() failed (SSL: error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:Verify error:unable to get issuer certificate) while requesting certificate status, responder: ocsp.buypass.com, peer: 23.55.161.57:80, certificate: "/etc/letsencrypt/live/example.com/fullchain.pem"
nginx certbot lets-encrypt x509
  • 1 个回答
  • 487 Views
Martin Hope
S4M8
Asked: 2020-12-12 11:52:39 +0800 CST

在 Windows 10 上打开 SSL 错误 - 将签名的 CSR 从 PEM 转换为 CRT

  • 0

我正在尝试为用户创建具有 x.509 证书身份验证的 IPSec VPN 连接。

接下来是一个让事情顺利进行的测试,并不是一个安全的实现。当我得到这个工作时,我将从受信任的来源获得证书,同时我正在使用自签名。

我在 Windows 10 20H2 上

1- 我用 XCA 创建了一个根证书。

2- 我为我的第一个 vpn 用户创建了一个证书签名请求。

3- 我用 XCA 签署请求

4-我以 PEM 格式从 XCA 导出请求

5- 我安装 OpenSSL 并将环境变量 OPENSSL_CONF 设置为安装文件夹中的 openssl.cfg。我在 W10 上使用https://slproweb.com/products/Win32OpenSSL.html(64位)作为 openSSL

6- 乐趣开始了。

据我了解,我必须使用管理单元证书通过命令行中的 mmc 在 Windows 机器中添加证书。添加向导的东西。它不接受 pem 格式,它需要一个 crt。

然后我参考 OpenSSL 进行格式转换

当我输入 x509 -in CERT.pem -out CERTII.crt

我收到以下错误:

Can't open CERT.pem for reading, No such file or directory
15732:error:02001002:system library:fopen:No such file or directory:crypto\bio\bss_file.c:69:fopen('CERT.pem','r')
15732:error:2006D080:BIO routines:BIO_new_file:no such file:crypto\bio\bss_file.c:76:
unable to load certificate
error in x509

我已经搜索了很多,但找不到这个错误的确切含义,我正在考虑将头发一根一根地拔出来作为一种可行的选择。

编辑 2020-12-11 1600

重命名为 .crt 并添加到本地证书给了我一个错误:

file type is not recognizable. Select another file.

此外,即使使用 admin priv. 在 openssl cli 中指定完整路径,我也会收到错误消息。

例如,如果我将证书复制到 OpenSSL 文件夹中,并尝试执行命令“openssl x509 -in CERT.pem -out CERT.crt”,则会出现以下错误:

"unable to load certificate
15252:error:0909006C:PEM routines:get_name:no start line:crypto\pem\pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
error in x509"

编辑 2020-12-10 1610 - 证书片段

-----BEGIN CERTIFICATE REQUEST-----
MIIDGjCCAgICAQAwgaExCzAJBgNVBAYTAkNBMQ8wDQYDVQQIEwZRVUVCRUMxEjAQ
....
hfz1ew0RTMxZv2hMlN/wn5Y0EZKpRr5jMrgZprG7
-----END CERTIFICATE REQUEST-----

我猜它不应该被列为请求,而是作为签名证书?

编辑 2020-12-10 1626 EST

UnNamed 解决了我的问题。对他们大喊大叫。

在 XCA 中,当您签署请求时,并不清楚它需要从不同的选项卡(证书)导出。

在用于签署用户证书的根证书下,是一个带有已签名用户证书的下拉列表。在为其中的证书创建自定义视图后,我能够将其导出并将其添加到 mmc 中而不会出现问题。

继续从这里设置 VPN。

windows certificate openssl csr x509
  • 1 个回答
  • 1286 Views
Martin Hope
Amessihel
Asked: 2020-06-27 01:05:14 +0800 CST

为服务帐户安装通过 MMC 安装的证书

  • 0

(免责声明:我已经在 StackOverflow 上发布了这个问题,但从开发人员的角度来看。我试图重写这个问题以适应 ServerFault 条件)

自定义服务必须通过 HTTPS 连接登录远程服务器,因此需要使用 SSL 证书 (Windows 2008 Server SP2)。

我按照Microsoft 的说明使用 MMC 为服务帐户安装证书。该证书(自签名)安装在受信任的根证书颁发机构证书存储中。所以我添加了一个证书管理单元,为服务帐户添加了证书。然后我将控制台文件保存在某个地方,但我不知道它是否有用(我想这些更改会立即生效?)。

证书在注册表中可见(<ServiceName>是服务的名称):

HKLM\SOFTWARE\Microsoft\Cryptography\ Services\<ServiceName>\SystemCertificates\Root\Certificates\<digitalFootprint>

但是,该服务找不到证书(假定存储的类型为 X509)。

在尝试使用certmgr.msc为用户安装证书时,我遇到了类似的问题。我必须以用户身份登录,通过Internet Explorer安装它以使其工作。

我错过了什么?

windows-service ssl-certificate windows-server-2008-r2 x509 mmc
  • 1 个回答
  • 555 Views
Martin Hope
Ken Jackson
Asked: 2020-06-06 13:47:41 +0800 CST

如何使用 `certtool` 制作 CA 证书?

  • 0

openssl我可以通过将行basicConstraints = critical,CA:true放在配置文件的适当部分并使用它来使用命令制作自签名 CA 证书:

openssl req -new -x509 -config myconfig.cnf ...

但是我在使用该certtool命令做同样的事情时遇到了困难。似乎我应该能够将同一行添加到通过--template=FILE开关传递的模板文件中,但该行无法识别。

我发现basicConstraints是 OID 号2.5.29.19(在 oid-info.com),所以我应该能够添加这样的一行:add_extension = "2.5.29.19 critical,CA:true". 但这也失败了。显然 OID 后面的参数必须是数字。

查看RFC2459第 119 页上的代码,我认为这个字符串可能有效。语法被接受,但仍然不产生 CA:add_extension = "2.5.29.19 0xff010103300504ff0101"

那么如何进行certtool插入扩展critical,CA:true来创建 CA 证书呢?

certificate certificate-authority x509
  • 1 个回答
  • 581 Views
Martin Hope
joedotnot
Asked: 2020-05-21 21:30:27 +0800 CST

X509 证书 - 是否有任何命名约定?

  • 2

购买证书时的命名约定是什么(如果有)?

当为特定服务器购买 TLS/HTTPS 证书时,我自然会默认使用服务器的名称。例如,如果服务器名为 MOONSERVER,我会将 x509 证书的主题设置为 MOONSERVER。

此外,我需要使用另一个证书进行消息签名。我应该怎么称呼这个?有效名称的规则是什么?例如,连字符、下划线等可以吗?名称是否区分大小写?

certificate x509
  • 1 个回答
  • 913 Views
Martin Hope
user87313
Asked: 2020-06-01 07:56:13 +0800 CST

OpenVPN 访问服务器 - 遇到警告 X509_V_ERR_CERT_HAS_EXPIRED 但证书实际上尚未过期

  • 0

我试图通过 MacOS openvpn 应用程序连接到我公司的 openvpn 网络并点击警告“服务器 vpn.my_company.com 有一个不受信任的 SSL 证书。允许连接继续吗?”

单击“更多详细信息”时,原因表明“X509_V_ERR_CERT_HAS_EXPIRED:证书已过期”。但是我仍然可以选择连接

我从 OpenVPN 管理网页查看了更多信息,证书“验证结果”部分显示:

Web 证书/密钥验证结果。

证书信任警告:证书已过期

有效时间:2018.08.24 00:00:00 UTC

有效期至:2020.08.23 23:59:59 UTC -->未来几个月

我的证书是由 COMODO 颁发的,它的状态仍然有效。另外,当我通过网络浏览器访问 vpn.my_company.com 时,证书仍然可以,即没有关于过期证书的警告

知道为什么 OpenVPN 应用程序不断警告我证书过期吗?我通过 openvpn 应用程序的连接实际上是不安全的吗?或者我可以忽略警告?

非常感谢您对此的任何评论:)

openvpn certificate x509
  • 1 个回答
  • 732 Views
Martin Hope
pinhead
Asked: 2020-04-26 15:45:24 +0800 CST

x509 扩展:“extnValue”可以为空吗?

  • 4

我正在编写一个解析 x509 证书的脚本。x509 v3 证书的扩展是一个 ASN.1 序列,其中包含一个 OID、一个critical标志和一个称为extnValue.

对于basicConstraints扩展,extnValue 应该是另一个带有详细信息的 ASN.1 序列。

我遇到了一个在那里有一个空序列的证书。从字面上0x30 0x00看,解析为零长度的 ASN.1 序列的字节,而不是预期的数据集(证书颁发机构的布尔值和路径长度的整数。

我在野外找到了具有这种质量的证书这一事实意味着它是有效的,但我希望找到一个关于此的具体协议规则,以便我的脚本可以正确处理它而不是引发错误。

ssl-certificate x509
  • 1 个回答
  • 237 Views
Martin Hope
user1169420
Asked: 2020-04-01 12:10:55 +0800 CST

如何正确生成使用受限的 x509 证书

  • 1

我将证书放入存储库中,该存储库不允许使用比前一个更有限的连续证书。我需要一个初始的虚拟证书/密钥/链来引导使用不比允许 serverAuth 和 clientAuth 的 Let's Encrypt 主机证书更开放的进程。我所需要的只是一个具有这些用途或更少用途的虚拟主机证书。但是,在昨天和今天阅读了许多文章和 SO 帖子之后,由于命令的多次迭代,我一直无法生成这个。

这是我正在使用的内容:

生成器

#!/bin/bash -e

rm dummy*

days=100

openssl genrsa -out dummy-root.key 2048

openssl req -new -x509 -days $days -subj '/C=US/ST=TX/O=foo/OU=bar/CN=dummy-root.com' -key dummy-root.key -out dummy-root.crt

openssl genrsa -out dummy-class2.key 2048

openssl req -new -subj '/C=US/ST=TX/O=foo/OU=bar/CN=dummy-class2.com' -key dummy-class2.key -out dummy-class2.csr 

openssl x509 -req -days $days -in dummy-class2.csr -CA dummy-root.crt -CAkey dummy-root.key -CAcreateserial -out dummy-class2.crt

openssl genrsa -out dummy-host.key 2048

openssl req -new -config gen.host.cfg -key dummy-host.key -out dummy-host.csr -extensions my_server_exts

openssl x509 -req -days $days -in dummy-host.csr -CA dummy-class2.crt -CAkey dummy-class2.key -set_serial 1 -out dummy-host.crt -sha256  -ext subjAltName

rm *.srl *.csr
cat dummy-host.crt dummy-class2.crt dummy-root.crt > dummy-chain.crt

# this always fails?
# openssl verify --CAfile dummy-root.crt -untrusted dummy-class2.crt dummy-host.crt

openssl x509 -noout -ext extendedKeyUsage < dummy-host.crt

对于扩展所需的配置文件(参考上文):

生成主机.cfg

[ req ]
prompt             = no
default_bits       = 2048
default_md         = sha256
distinguished_name = my_dn
req_extensions     = my_server_exts


[ my_dn ]
# The bare minimum is probably a commonName
            commonName = dummy-host2.com
           countryName = US
      organizationName = foo
organizationalUnitName = bar

[ my_server_exts ]
basicConstraints = critical,CA:false
keyUsage = keyEncipherment
# extendedKeyUsage = serverAuth
extendedKeyUsage = 1.3.6.1.5.5.7.3.1

gen.sh 的最后一行尝试读取扩展名并总是说“证书中没有扩展名”,当发送到证书存储库时会解释为具有“任何”使用情况,然后在使用 Lets Encrypt 更新时拒绝减少使用情况证书。

为什么我指定的 EKU 没有通过证书?或者我还能如何创建使用受限的证书?

certificate pki openssl x509
  • 1 个回答
  • 1067 Views

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