最近发现的 Heartbleed 漏洞促使证书颁发机构重新颁发证书。
我有两个证书是在发现 heartbleed 漏洞之前生成的。在 SSL 颁发者告诉我重新生成证书后,我用新证书更新了我的服务器/域。
如果我的理解是正确的,那么旧证书应该已被 CA 吊销,并且应该已将其添加到 CRL(证书吊销列表)或 OCSP 数据库(在线证书状态协议)中,否则技术上可能有人执行“中间人攻击”,通过从受损证书中获取的信息重新生成证书。
有没有办法检查我的旧证书是否已通过 CRL 和 OCSP。如果他们还没有,有没有办法让他们包括在内?
更新:情况是我已经替换了我的证书,我所拥有的只是旧证书的 .crt 文件,因此使用 url 进行检查是不可能的。
我正在测试 CMTS 设备的证书撤销功能。这需要我设置一个 OCSP 响应程序。由于它仅用于测试,我假设 OpenSSL 提供的最小实现就足够了。
我已经从电缆调制解调器中提取了证书,将其复制到我的 PC 并将其转换为 PEM 格式。现在我想在 OpenSSL OCSP 数据库中注册它并启动一个服务器。
我已经完成了所有这些步骤,但是当我执行客户端请求时,我的服务器总是以“未知”响应。它似乎完全不知道我的证书的存在。
如果有人愿意查看我的代码,我将不胜感激。为方便起见,我创建了一个脚本,其中包含所有使用命令的顺序列表,从设置 CA 到启动服务器:http : //code.google.com/p/stacked-crooked/source/browse/主干/杂项/OpenSSL/AllCommands.sh
您还可以找到我正在测试的自定义配置文件和证书:http : //code.google.com/p/stacked-crooked/source/browse/trunk/Misc/OpenSSL/
任何帮助将不胜感激。
我是从头开始设置 SSL 的新手,并做了我的第一步。我从 RapidSSL 为我的域购买了 SSL 证书,并按照那里的步骤安装证书。一般来说,证书是有效的并且可以在我的网络服务器上运行(nginx v1.4.6 - Ubuntu 14.04.1 LTS),但是如果我尝试激活 OCSP OCSP,我会在我的 nginx error.log 中收到以下错误:
OCSP_basic_verify() 失败(SSL:错误:27069065:OCSP 例程:OCSP_basic_verify:证书验证错误:验证错误:无法获得本地颁发者证书),同时请求证书状态,响应者:gv.symcd.com
我也用命令行中的这个命令尝试过:
openssl s_client -connect mydomain.tld:443 2>&1 < /dev/null
并在我的 error.log 中得到“相同”错误:
[...]SSL 会话:协议:TLSv1.2 密码:ECDHE-RSA-AES256-GCM-SHA384 [...] 开始时间:1411583991 超时:300(秒)验证返回代码:20(无法获取本地发行人证书)
但是,如果下载 GeoTrust Root Certificat 并使用以下命令尝试:
openssl s_client -connect mydomain.tld:443 -CAfile GeoTrust_Global_CA.pem 2>&1 < /dev/null
验证没问题:
[...]SSL 会话:协议:TLSv1.2 密码:ECDHE-RSA-AES256-GCM-SHA384 [...] 开始时间:1411583262 超时:300(秒)验证返回代码:0(确定)
所以不知何故没有找到/交付 GeoTrust 根证书。
我的 nginx 站点配置:
server {
listen 443;
server_name mydomain.tld;
ssl on;
ssl_certificate /etc/ssl/certs/ssl.crt;
ssl_certificate_key /etc/ssl/private/ssl.key;
# Resumption
ssl_session_cache shared:SSL:20m; …Run Code Online (Sandbox Code Playgroud) 任何人都可以为 Windows 或 Linux 推荐一个免费且简单的 OCSP 服务器吗?
我正在尝试设置 OCSP 验证例程,因此希望首先适应环境。在例如OpenSSL: Manually verify a certificate against an OCSP 中找到了优秀的教程。
出现多个问题,所以请耐心等待。
自该教程以来发生了一些变化,但我认为要点是:
1)获取您要验证的证书,例如
openssl s_client -connect wikipedia.org:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > wikipedia.pem
Run Code Online (Sandbox Code Playgroud)
2)建立证书链,例如
openssl s_client -connect wikipedia.org:443 -showcerts 2>&1 < /dev/null > chain.pem
Run Code Online (Sandbox Code Playgroud)
然后进行适当的编辑。我发现上面没有提供自签名 CA 证书 GlobalSignRootCA,所以在.
3)确定ocsp URI,例如
openssl x509 -noout -ocsp_uri -in wikipedia.pem
Run Code Online (Sandbox Code Playgroud)
返回
http://ocsp2.globalsign.com/gsorganizationvalsha2g2
Run Code Online (Sandbox Code Playgroud)
4)调用openssl ocsp客户端,例如
openssl ocsp -issuer chain.pem -cert wikipedia.pem -url http://ocsp2.globalsign.com/gsorganizationvalsha2g2
Run Code Online (Sandbox Code Playgroud)
返回
[woody@oc2042275410 testCerts]$ openssl ocsp -issuer chain.pem -cert wikipedia.pem -url http ://ocsp2.globalsign.com/gsorganizationvalsha2g2
Error querying OCSP responsder …Run Code Online (Sandbox Code Playgroud) 该ssl_stapling_verify指令究竟是做什么的?它是否检查答案的签名是否正确?nginx 官方文档对此的解释非常模糊:
https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling_verify
启用或禁用服务器对 OCSP 响应的验证。
为了验证工作,服务器证书颁发者的证书、根证书和所有中间证书应该使用 ssl_trusted_certificate 指令配置为受信任。
由于我想在我的 SSL 证书中设置“必须装订”属性,我正在做一些研究,以确定我的所有服务是否都支持 OCSP 装订。到目前为止,我发现 Apache 可以使用 SSLLabs.com 进行确认。
但除此之外,我无法确认我的其他两个服务(SMTP 和 IMAP)是否也支持 OCSP 装订。现在我的问题是,Postfix 和 Dovecot 是否也支持它?
PS:我知道证书在邮件传输方面似乎并不重要,但我想避免任何可能的问题,如果我添加属性并且客户端可能因此拒绝工作,而其他人可能从中受益。
在对网络超时/连接 WinHTTP 问题进行故障排除时,我临时添加了一个主机文件条目:
127.0.0.1 ctldl.windowsupdate.com
Run Code Online (Sandbox Code Playgroud)
(服务器没有互联网连接,防火墙导致一些延长的超时——我想暂时将它设置为本地地址以使其立即失败)。
但出于某种原因,即使在刷新 DNS 缓存后,ping 尝试仍会转到实际 IP。
这让我开始思考:是否存在某些 Windows 2008 绝对不会确认其主机文件条目的 FQDN?也许是为了恶意软件/病毒防护?
如果在 IIS 站点的绑定上选中了需要服务器名称指示,则该站点的 OCSP 装订被禁用。
这可以通过为当前不需要的站点启用 SNI 并使用https://www.ssllabs.com/ssltest/或 openssl检查来轻松确认:
openssl s_client -connect foobar.com:443 -servername foobar.com -tls1 -tlsextdebug -status
Run Code Online (Sandbox Code Playgroud)
有没有人对此有解决方法,以便启用 SNI 的站点的客户可以享受 OCSP 装订的好处?
有没有办法在每次重新加载或重新启动Nginx配置时主动生成OCSP 主食证书?或者,是否可以将 Nginx 设置为在重新加载或重新启动时保存装订的证书而不是丢弃它们?重新加载或重新启动 Nginx 似乎会清除所有缓存的 OCSP 装订证书。
我对 OSCP 装订进行了测试,并在运行 Nginx 1.11.4 并使用Certbot 的 OCSP Must-Staple TLS 功能扩展的 Ubuntu 16.04.1 服务器上工作。我的问题是,在重新加载或重新启动 Nginx 时,不会保存装订的响应,第一个访问者会看到一个错误页面(这是服务器尚未装订的“必须装订”证书的预期结果)。
我必须访问服务器托管的每个网站并重新加载它们几次,同时 Nginx 自动 OCSP 装订证书,然后一切重新开始工作,直到下一次重新启动。我想自动化这一步或完全避免它。
ocsp ×10
nginx ×3
openssl ×2
ssl ×2
certificate ×1
crl ×1
dovecot ×1
heartbleed ×1
hosts-file ×1
iis ×1
linux ×1
postfix ×1
security ×1
sni ×1
ubuntu-14.04 ×1
x509 ×1