标签: openssl

SSL 证书错误:验证错误:num=20:无法获取本地颁发者证书

我一直在尝试通过 SSL 连接到 LDAPS 服务器 (Active Directory) 以使其正常工作,但一直遇到问题。我尝试使用这个:

openssl s_client -connect the.server.edu:3269 
Run Code Online (Sandbox Code Playgroud)

结果如下:

verify error:num=20:unable to get local issuer certificate 
Run Code Online (Sandbox Code Playgroud)

我想,好吧,服务器是几年前的旧生产服务器。也许 CA 不存在。然后我将输出中的证书提取到 pem 文件中并尝试:

openssl s_client -CAfile mycert.pem -connect the.server.edu:3269
Run Code Online (Sandbox Code Playgroud)

这也不起作用。

我错过了什么?这不应该总是有效吗?

ssl openssl

13
推荐指数
1
解决办法
7万
查看次数

CentOS openLDAP 证书信任问题

# LDAPTLS_CACERTDIR=/etc/ssl/certs/ ldapwhoami -x -ZZ -H ldaps://ldap.domain.tld
ldap_start_tls: Can't contact LDAP server (-1)
      additional info: TLS error -8172:Peer's certificate issuer has been marked as not trusted by the user.

# openssl s_client -connect ldap.domain.tld:636 -CApath /etc/ssl/certs
<... successful tls negotiation stuff ...>
    Compression: 1 (zlib compression)
    Start Time: 1349994779
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
Run Code Online (Sandbox Code Playgroud)

openssl似乎认为证书没问题,但是openldap的库(pam_ldap表现出类似的行为,这就是我陷入困境的方式)不同意。
我究竟做错了什么?

openldap centos openssl tls

13
推荐指数
2
解决办法
5万
查看次数

OpenSSL:如何使用交互式请求的主题备用名称 (SAN) 生成 CSR?

我希望配置 OpenSSL,以便在运行openssl req -new以生成新的证书签名请求时,系统会提示我将任何备用主题名称包含在 CSR 中。

我已将此行添加到[req_attributes]我的部分openssl.cnf

subjectAltName                  = Alternative subject names
Run Code Online (Sandbox Code Playgroud)

这具有预期的效果,现在在生成 CSR 时会提示我输入 SAN:

$ openssl req -new -out test.csr -key ./test.key                            <<<
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there …
Run Code Online (Sandbox Code Playgroud)

ssl certificate openssl ssl-certificate

13
推荐指数
1
解决办法
1万
查看次数

如何手动创建 Puppet CA 和证书?

我想知道如何手动(使用 openssl 而不是 puppet ca 命令)创建 Puppet 可以使用的 CA?目标是编写此类 CA 的脚本,以将它们部署在多个 puppetmaster 上,而不是通过 puppet cert 命令在它们上创建证书。

关于如何做到这一点的任何想法?我只能找到类似的东西:https : //wiki.mozilla.org/ReleaseEngineering/PuppetAgain/HowTo/Set_up_a_standalone_puppetmaster 但它无法工作 - 在创建 CA 和客户端证书并将它们应用到 puppetmaster 之后,它抱怨:

Feb 16 09:35:20 test puppet-master[81728]: Could not prepare for execution: The certificate retrieved from the master does not match the agent's private key.
Feb 16 09:35:20 test puppet-master[81728]: Certificate fingerprint: 4F:08:AE:01:B9:14:AC:A4:EA:A7:92:D7:02:E9:34:39:1C:5F:0D:93:A0:85:1C:CF:68:E4:52:B8:25:D1:11:64
Feb 16 09:35:20 test puppet-master[81728]: To fix this, remove the certificate from both the master and the agent and then start a …
Run Code Online (Sandbox Code Playgroud)

ssl certificate openssl puppet

13
推荐指数
1
解决办法
8728
查看次数

如何在 Apache 中禁用 TLS 1.1 和 1.2?

我有一个运行 Apache 2.2.22 和 mod_ssl 和 OpenSSL v1.0.1 的 Ubuntu 12.04.2 LTS 服务器。

在我的虚拟主机配置(一切在其中表现为我所期望的),我有SSLProtocol跟线-all +SSLv3

通过这种结构,TLS 1.1和1.2都启用并正确的工作-这是反直觉和我说话,我会认为只有SSLv3的将被启用考虑到的配置。

我可以很好地启用/禁用 TLSv1 -/+TSLv1,并且它按预期工作。但是+/-TLSv1.1并且+/-TLSv1.2不是有效的配置选项 - 所以我不能那样禁用它们。

至于我为什么要这样做 - 我正在处理一个第三方应用程序(我无法控制),它在启用 TLS 的服务器上有一些错误行为,我需要完全禁用它才能继续前进。

ssl mod-ssl openssl tls apache-2.2

13
推荐指数
1
解决办法
5万
查看次数

使用 openssl 生成自签名证书时如何添加扩展密钥用法字符串

我在 Mac OS X 10.9 上使用 openssl 为 Windows Server 远程桌面服务生成自签名证书。

使用下面的命令我可以生成证书,

   openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt
Run Code Online (Sandbox Code Playgroud)

但是,我需要添加一个扩展的密钥用法字符串服务器身份验证 (1.3.6.1.5.5.7.3.1)并且我无法弄清楚如何在上面的命令中执行此操作。

我曾尝试将 openssl 选项-extfile与包含此文件的文件一起使用,

[= default ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
Run Code Online (Sandbox Code Playgroud)

但是,我收到“未找到-extfile 选项”的错误消息

mac-osx openssl windows-server-2012

13
推荐指数
2
解决办法
3万
查看次数

如何在 openssl cli 中指定 subjectAltName?

我正在生成一个自签名 SSL 证书:

$ openssl req -x509 -newkey rsa:2048 -subj 'CN=example.com'
Run Code Online (Sandbox Code Playgroud)

我还想在创建时指定一个subjectAltName,但我无法在 openssl 联机帮助页中找到有关如何执行此操作的信息。

ssl nginx openssl

13
推荐指数
1
解决办法
2万
查看次数

PEM 文件“证书”与“公钥”

我有一个如下所示的 PEM 文件:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

我可以转换到另一种使用PEM文件:openssl x509 -in key.crt -pubkey -noout。新的 PEM 文件现在看起来像:

-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

我的问题是,这两个文件有什么区别?

certificate openssl ssl-certificate public-key

13
推荐指数
1
解决办法
4万
查看次数

如何使用 OpenSSL(自签名证书)创建 PKCS12 文件

我有一个 bit9 服务器,我对环境和证书还很陌生。上传证书的区域显示“从 PKCS12 文件导入服务器证书

我将只使用自签名证书(我希望它没问题),并且我正在运行以下命令来执行此操作。

openssl req -x509 -newkey rsa:4096 -keyout bit9.pem -out cert.pem -days 365
Run Code Online (Sandbox Code Playgroud)

这是我应该做的,如果是这样,我如何将它放到 PKCS12 文件中?

我一直在环顾四周,发现以下命令:

将 PEM 证书文件和私钥转换为 PKCS#12

openssl pkcs12 -export -out <certificate.pfx> -inkey <privateKey.key> -in <certificate.crt> -certfile <CACert.crt>
Run Code Online (Sandbox Code Playgroud)

由于我只有一个 pem 文件……我不知道该怎么做。

certificate openssl ssl-certificate

12
推荐指数
1
解决办法
3万
查看次数

重新颁发自签名根 CA 而不使其签名的证书无效

我为我们公司的一些内部服务创建了一个自签名的根证书颁发机构,我自己配置​​了它(主要通过 HTTPS 提供服务)。然后我为这些服务创建了证书,并使用此 CA 签名。

现在我想向根 CA 添加一个 x509 扩展(CRL 分发点),而不会使从此 CA 颁发的现有服务器证书无效。这可能吗?

我的直觉是“是”,因为据我所知,访问相应的私钥对于证书身份的“完全授权”是必要充分的。也就是说,除非在生成证书时(可能)将某种随机数与公钥一起合并到证书中。

我对 SSL 证书管理还是很陌生,但我(认为我)了解标准信任链的基础知识。我也很熟悉其他 PKI 加密的基本使用:我管理 SSH 密钥并使用 GPG 进行签名和加密。我学的是计算机科学,虽然我只是一个自学的密码学涉猎者。

我从未为原始 IIRC 制作过 CSR(我认为它是 的直接输出openssl req -new -x509)。当然,我仍然拥有原始 CA 的私钥,并且使用它我能够将原始证书“反转”为证书签名请求: openssl x509 -x509toreq -in MyCA.pem -out MyCA.csr -signkey private/MyCA.key

我希望这会有效地“提取”上面提到的随机数,并允许我重新创建证书,但这次使用一个crlDistributionPoints字段,因此所有使用原始 CA 签名的证书仍将针对此新 CA 进行验证,但例外客户端将从字段中指定的 HTTP URL 检索我的(当前为空的)CRL 文件。

所以我做了一个扩展配置文件ext.conf

[ cert_ext ] 
subjectKeyIdentifier=hash
crlDistributionPoints=URI:http://security.mycompany.co.za/root.crl
Run Code Online (Sandbox Code Playgroud)

我从 CSR 生成了新版本的根 CA:

openssl x509 -extfile ./ext.conf -extensions cert_ext -req -signkey private/MyCA.key -in …
Run Code Online (Sandbox Code Playgroud)

openssl ssl-certificate certificate-authority

12
推荐指数
1
解决办法
3673
查看次数