标签: openssl

即使我知道密码,也无法解密私钥

我认为我的问题归结为密钥有问题,但我不能只是解密它,以便进一步调查,而不对其进行解析。但我不确定。

我正在尝试使用标准方法:

openssl rsa -in ./id_rsa -out ./id_rsa.decrypted
Run Code Online (Sandbox Code Playgroud)

我想我知道密码,因为当我输入错误时,我得到:

Enter pass phrase for ./id_rsa:
unable to load Private Key
140256774473360:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:544:
140256774473360:error:0906A065:PEM routines:PEM_do_header:bad decrypt:pem_lib.c:483
Run Code Online (Sandbox Code Playgroud)

坏解密”很清楚。现在,当我输入看似不错的密码时,我会回来:

Enter pass phrase for ./id_rsa:
unable to load Private Key
139662870623888:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:153:
139662870623888:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1314:
139662870623888:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=RSA
139662870623888:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
139662870623888:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:153:
139662870623888:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1314:
139662870623888:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=PKCS8_PRIV_KEY_INFO
139662870623888:error:0907B00D:PEM routines:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:132:
Run Code Online (Sandbox Code Playgroud)

它也无法加载密钥,但现在它在 asn1 解析器上失败了,与密码无关。

我可以以某种方式获得未加密版本的密钥并使用其他工具查看有什么问题吗?

我看过一些帖子,说有些东西发生了变化,看似好的密钥的可能原因无法解析,但它们都适用于未加密的版本。但他们唯一的方法是我看到的 …

rsa openssl passphrase

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

在 openssl 输出中验证 return:1 是什么意思

我不明白 openssl 的输出。运行 openssl 如下:

#openssl s_client -connect google.com:443 -CAfile cacert.pem < /dev/null

最终一切都很好,因为最终实体的证书已经过验证: Verify return code: 0 (ok)

但是return:1对于下面的中间体,在输出开头的验证呢?这是什么意思或有什么意义?

depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority 验证返回:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA 验证返回:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2 验证返回:1
depth=0 C = 美国,ST = 加利福尼亚,L = 山景城,O = Google Inc,CN = google.com 验证返回:1

--- …

openssl

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

如何使用 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
查看次数

将 .p7b 密钥转换为 .pfx

我有一个 .p7b 格式的 SSL 证书,我需要将其转换为 .pfx。如果我通过 Windows 证书管理尝试此操作,则专家作为 .pfx 的选项将被禁用。

尝试使用 openssl 我发现以下两个命令可以进行转换:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
Run Code Online (Sandbox Code Playgroud)

但我不确定 esecond 命令使用什么密钥,或者 CACert.cer 指的是什么证书。

如何将此密钥转换为 .pfx 格式?

ssl certificate encryption openssl

11
推荐指数
2
解决办法
12万
查看次数

OpenVPN:链中的自签名证书

我正在尝试使用TunnelBlick(已知良好的 OS/X OpenVPN 2.2.1 客户端)使用证书进行连接,但未成功。这是我收到的(已清理)错误消息:

2012-01-11 11:18:26 TLS:来自 **.**.**.** 的初始数据包:1194,sid=17a4a801 5012e004
2012-01-11 11:18:26 验证错误:深度=1,错误=证书链中的自签名证书: /C=US/ST=**/L=**/O=**/CN=** /电子邮件地址=**
2012-01-11 11:18:26 TLS_ERROR:BIO 读取 tls_read_plaintext 错误:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败
2012-01-11 11:18:26 TLS 错误:TLS 对象 -> 传入明文读取错误
2012-01-11 11:18:26 TLS 错误:TLS 握手失败
2012-01-11 11:18:26 TCP/UDP:关闭套接字

现在,问题来了。我自己生成了一个 CSR来请求这个证书,使用对方提供给我的ca.crt文件(实际上,他们做了两次只是为了确保)。

客户端配置中的相关条目是:

ca   ca.crt
cert my.crt
key  my.key
Run Code Online (Sandbox Code Playgroud)

而且,此外......我可以通过这种方式验证密钥:

openssl verify -CAfile ca.crt my.crt 
my.crt: OK

好的,所以现在我彻底迷惑和难住了。此时,我知道CSR 和密钥是使用正确的 CSR 生成的。事实上,这是执行此操作的命令:

openssl req -newkey …
Run Code Online (Sandbox Code Playgroud)

openvpn openssl

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

openssl:生成具有非 DNS 主题备用名称的证书请求

要使用 openssl 创建包含主机的主题备用名称 (SAN) 的证书请求,我可以使用这样的配置文件(已剪辑):

[req]
req_extensions = v3_req
[ v3_req ]
subjectAltName = @alt_names
[alt_names]
DNS = xyz.example.com
Run Code Online (Sandbox Code Playgroud)

如果我需要提供专有名称或用户主体名称,我应该如何alt_names为用户证书请求配置该部分?
例如,我试过

[alt_names]
UPN = xyz@example.com
Run Code Online (Sandbox Code Playgroud)

但我收到了这个错误:

Error Loading request extension section v3_req
5356:error:22075075:X509 V3 routines:v2i_GENERAL_NAME_ex:unsupported option:.\crypto\x509v3\v3_alt.c:557:name=userPrincipalName
5356:error:22098080:X509 V3 routines:X509V3_EXT_nconf:error in extension:.\crypto\x509v3\v3_conf.c:93:name=subjectAltName, value=@alt_names
Run Code Online (Sandbox Code Playgroud)

certificate openssl

11
推荐指数
2
解决办法
4万
查看次数

apache ssl - 无法获得本地颁发者证书

不知何故,今天突然我的 Seafile 客户端抛出了这个错误。我不相信这是一个 seafile 问题,因为我的 openssl 抛出了完全相同的错误:

user@nb-user:~$ echo |openssl s_client -connect seafile.mydomain.ch:443
CONNECTED(00000003)
depth=1 C = IL, O = StartCom Ltd., OU = Secure Digital Certificate Signing, CN = StartCom Class 2 Primary Intermediate Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/description=5RygJ9fx8e2SBLzw/C=CH/ST=Thurgau/L=Frauenfeld/O=mydomain GmbH/CN=*.mydomain.ch/emailAddress=postmaster@mydomain.ch
   i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 2 Primary Intermediate Server CA
 1 s:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 2 Primary Intermediate Server CA
   i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom …
Run Code Online (Sandbox Code Playgroud)

openssl certificate-authority apache-2.4

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

为什么我的服务器不支持 ALPN?

我目前正在使用 NGINX 1.11.9 和 openssl 1.0.2g 运行 Ubuntu 16.04.1 LTS 服务器。

根据我阅读的所有内容,这些版本应该支持 ALPN,但是当我在KeyCDN 的 HTTP/2 测试工具上运行测试时,我得到“不支持 ALPN”keycdn 测试报告的屏幕截图

当我执行时echo | openssl s_client -alpn h2 -connect example.com:443 | grep ALPN,我得到:

depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C …
Run Code Online (Sandbox Code Playgroud)

ssl nginx openssl http2 ubuntu-16.04

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

我为 localhost 创建的自签名 ssl 无法信任,即使我已经将其导入 chrome

我正在创建 https 服务器端,用于练习 Instagram 的 OAuth,这需要 https。

我通过从以下链接运行脚本来使用 ssl 生成证书:https://gist.github.com/bjanderson/075fadfccdd12623ab935e57eff58eb4

脚本运行得很好,我收到了所有预期的文件。我已在受信任的根证书颁发机构下将 ca.crt 导入到我的 chrome 中,但 chrome 仍然不信任它。导入位置是否合适,因为 chrome 有许多不同的部分可以导入 ca.crt。

我收到以下错误:

证书 - 缺少使用者备用名称 此站点的证书不包含包含域名或 IP 地址的使用者备用名称扩展。

证书 - 丢失 该站点缺少有效的、受信任的证书 (net::ERR_CERT_AUTHORITY_INVALID)。

如何解决这两个问题并让我的 Chrome 信任我的自签名证书?

https openssl ssl-certificate certificate-authority self-signed-certificate

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