我有一个从 Windows Server 2008 导出的 .pfx 文件。它包含私钥和证书链。
使用openssl我已经能够提取私钥和公共证书,但我还需要完整的证书颁发机构链。这部分如何提取呢?
目的是将证书移动到AWS EC2负载均衡器。到目前为止,我能够做到这一点的唯一方法是使用 Chrome 导出链证书。
我有一个自定义的 easyrsa 设置,带有一个根和三个由根签名的 CA。(三个不同的子 cas 取决于用户类型),如下所示:
RootCA
+----- AdminUserCA
+----- EmployeeCA
+----- ClientCA
Run Code Online (Sandbox Code Playgroud)
我使用以下配置进行身份验证:
server {
listen 127.0.0.1:443;
server_name www.acme.corp;
ssl on;
ssl_certificate /data/src/easy-rsa/bundles/www.acme.corp_bundle.crt;
ssl_certificate_key /data/src/easy-rsa/whfWebCA/pki/private/www.acme.corp.key;
add_header Strict-Transport-Security "max-age=315360000; includeSubdomains";
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA;
ssl_prefer_server_ciphers on;
ssl_verify_client optional;
ssl_client_certificate /data/src/easy-rsa/bundles/client_auth_ca_chain.crt;
ssl_verify_depth 2;
ssl_crl /data/src/easy-rsa/bundles/crls/all.pem;
...
}
Run Code Online (Sandbox Code Playgroud)
问题在于 CRL 检查。CRL 由颁发 CA 签名,因此它们不能像中间证书 + 根证书一样附加在一起。
因此,用户的证书将由给定的中间 CA 根据其用户类型颁发。问题是我真的需要检查四个 CRL 列表才能有效。nginxssl_crl只支持单个文件。
所以我的问题是:是否可以让 nginx 在此设置中正确检查客户端证书吊销,而无需在我的应用程序中进行检查?
我的一个特定客户端出现问题,该客户端访问了我的 haproxy 负载均衡器。haproxy 日志中的错误消息:]
incoming_ssl/1: SSL handshake failure
Run Code Online (Sandbox Code Playgroud)
有问题的客户端似乎是一些 Apache Java 客户端或 ActiveMq 服务器 - 无论哪种方式,它都是我们对其进行零控制的远程服务器。
使用 ssldump,我看到这些行:
11 5 0.4152 (0.1649) C>S Alert
level fatal
value certificate_unknown
11 0.4152 (0.0000) C>S TCP FIN
Run Code Online (Sandbox Code Playgroud)
使用curl /浏览器一切看起来都很好,我已经做了一些ssl检查,没有报告此类问题。
我已经从我的 haproxy 配置文件中删除了尽可能多的内容来诊断问题。我什至测试过直接访问后端(NodeJS)服务器,效果很好 - 客户端可以连接。这确实是 haproxy,我只是不知道如何修复它。
我的基本 haproxy conf 文件如下所示:
frontend incoming_ssl
bind *:443 ssl crt /etc/haproxy/cert.key ca-file /etc/haproxy/cert.pem ciphers ECDHE-RSA-AES256-SHA:RC4-SHA:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM
acl flume hdr_dom(host) -i dom.ain.com
use_backend flume if flume
backend flume :80
server flume 10.40.14.1:8000 weight 1 maxconn 1000 check inter 2000
Run Code Online (Sandbox Code Playgroud)
也尝试过使用 …
* TLDR;如果您遇到连接问题,不仅要确保已将所需的规则添加到防火墙中,还要确保 ( $ iptables -L -v) 规则的顺序正确!*
现在已经几天了,我不明白为什么我的 IMAP 设置(在端口 993 上)拒绝工作(使用 Dovecot,版本 2.2.22)。连接不成功,由于某种原因我看不到。
对与 openssl 的连接进行故障排除:在端口 993 上连接不起作用:
$ openssl s_client -connect my-domain.com:993
Run Code Online (Sandbox Code Playgroud)
返回:
connect: Connection timed out
connect:errno=110
Run Code Online (Sandbox Code Playgroud)
但是使用的端口(993)似乎是开放的:
$ ufw status
Run Code Online (Sandbox Code Playgroud)
返回:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
25/tcp ALLOW Anywhere
587/tcp ALLOW Anywhere
993/tcp ALLOW Anywhere
143/tcp ALLOW Anywhere
465/tcp ALLOW Anywhere
110/tcp ALLOW Anywhere
995/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere …Run Code Online (Sandbox Code Playgroud) 我正在运行在 Ubuntu 14.04 LTS 服务器上实现的 Web 服务。我正在调试客户端使用和服务器使用TLSv1 一段时间后连接中断。我自己无法访问客户端,只能访问服务器和路由器。当我代替服务器运行时,我会在客户端连接时看到消息。重新协商不一定与连接问题有任何关系,但我正在尝试理解重新协商。到目前为止,我还无法找到以下问题的答案:openssl version 0.9.7mopenssl 1.0.1fopenssl s_serversecure renegotiation not supported
openssl s_server和/或openssl s_client进行试验?我们在 CentOS 6 服务器上使用 OpenSSL 来监控服务器上的证书以获取 RDP。
为此,我们使用:
openssl s_client -connect SERVER01:3389 -prexit
这一直完美无缺,直到 4 天前,它突然停止显示证书已被使用,而是显示单个服务器的以下内容:
CONNECTED(00000003)
140439032170136:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity …Run Code Online (Sandbox Code Playgroud) 自从新的 Debian Buster 更新以来,我在 TLSv1.3 方面遇到了一些问题。
问题:我的 iOS 邮件客户端无法连接到我的邮件服务器 (12.2),并且我现在不想升级,因此我尝试找到一种使用 dovecot 禁用 TLSv1.3 的方法。
当前版本是:OpenSSL 1.1.1c 和 Dovecot 2.3.4.1
在 Dovecot 2.3 中,SSL 设置从 ssl_protocols 更改为 ssl_min_protocol。
# Minimum SSL protocol version to use. Potentially recognized values are SSLv3,
# TLSv1, TLSv1.1, and TLSv1.2, depending on the OpenSSL version used.
Run Code Online (Sandbox Code Playgroud)
但我想强制 Dovecot 使用 TLSv1.2,而不是使用最低 SSL 协议,因为 Dovecot 会先尝试可用的最高 SSL 协议 (TLSv1.3)。如果我设置 TLSv1.3,它将不会使用 TLSv1.2。
那么,有人知道如何强制 Dovecot 2.3.4.1 使用 TLSv1.2 吗?
为什么openssl要求我输入两个密码才能获得-info密钥pkcs12?
它要求Import Password我PEM Pass Phrase:
\xe2\x9e\x9c front git:(master) \xe2\x9c\x97 openssl pkcs12 -info -in front.p12 \nEnter Import Password:\nMAC: sha1, Iteration 102400\n...\nKey Attributes: <No Attributes>\nEnter PEM pass phrase:\nRun Code Online (Sandbox Code Playgroud)\n\n每一个是做什么用的?
\n我正在尝试将 Nginx 配置为仅使用 TLS1.3 和 2 个密码:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256。
所以,我尝试了这个配置:
ssl_protocols TLSv1.3;
ssl_ciphers TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256;
Run Code Online (Sandbox Code Playgroud)
但是nginx -s reload出现错误
nginx: [emerg] SSL_CTX_set_cipher_list("TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256") failed (SSL: error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match)", "operationName": "Default", "category": "Default"}
Run Code Online (Sandbox Code Playgroud)
看起来我需要附加至少一个非 TLS1.3 密码才能使配置正常工作。我尝试了各种这样的组合,它们起作用了。其中之一是:
TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?我认为发生这种情况是因为 OpenSSL 本身不接受原始的密码套件字符串。我正在使用 OpenSSL-1.1.1g。
root@2ed6cae6e062:/azure/appgw# openssl ciphers -v TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256
Error in cipher list
140686067873536:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match:ssl/ssl_lib.c:2558:
Run Code Online (Sandbox Code Playgroud)
我遇到了一些有用的链接,但无法弄清楚如何实现我想要的 -仅使用 TLS1.3 ciphersuites。
https://forum.nginx.org/read.php?2,284909,284914#msg-284914
https://trac.nginx.org/nginx/ticket/1529
https://wiki.openssl.org/index.html php/TLS1.3#密码套件
几个月前,我开始收到数十名用户的投诉,称在连接到我的网站时出现错误。当我查看 nginx 的 error.log 时,我看到每日 SSL 错误:
我不知道什么会导致这个问题,因为 99% 的用户都通过了,而且我自己似乎无法复制它。一位用户表示,改用 VPN 解决了他的问题。stackoverflow 上的其他帖子表明,来自同一 IP 的恶意请求会发生这种情况,但这里的情况并非如此。
有谁知道解决这个问题吗?
(我已经几个月没有对此服务器/配置进行任何更改了。)
网络服务器在 Ubuntu 20.10 上运行
2022/04/16 04:40:19 [crit] 809329#809329: *13542487 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 138.197.194.139, server: 0.0.0.0:443
2022/04/16 04:40:32 [crit] 809329#809329: *13542919 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 38.132.118.76, server: 0.0.0.0:443
2022/04/16 04:58:54 [crit] 809329#809329: *13564742 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 165.227.227.95, server: 0.0.0.0:443 …Run Code Online (Sandbox Code Playgroud)