在 Windows 10(版本 10.0.19041)上运行的 .NET 4.8 应用程序启用了 TLS 1.3,使用注册表按照如何在 Windows 10 中启用 TLS 1.3
但是运行以下代码:
try
{
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13;
using (var client = new WebClient())
{
var img = client.DownloadData("URL of an image - Only TLS 1.3 at client side - removed for privacy purposes");
MemoryStream ms = new MemoryStream(img);
Image i = Image.FromStream(ms);
i.Save(AppDomain.CurrentDomain.BaseDirectory+"/img1.jpeg");
}
}
catch(Exception ex)
{
logger.Log(LogLevel.Error, ex.ToString());
}
Run Code Online (Sandbox Code Playgroud)
产生以下内容 - 异常 StackTrace:
2020-10-05 12:40:52.4779 ERROR System.Net.WebException: The underlying connection was closed: An unexpected …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 perl 通过服务器 Office 365 发送邮件
该操作 10 次中有 8 次成功(即随机在 20% 的情况下失败)。
use Net::SMTPS;
my $mailer = Net::SMTPS->new("smtp.office365.com",
Port => "587",
doSSL => "starttls",
SSL_version => "TLSv1",
Debug => 4
);
...
Run Code Online (Sandbox Code Playgroud)
$mailer 返回 undef ;
下面是日志:
Net::SMTPS>>> Net::SMTPS(0.10)
Net::SMTPS>>> IO::Socket::IP(0.41)
Net::SMTPS>>> IO::Socket(1.48)
Net::SMTPS>>> IO::Handle(1.48)
Net::SMTPS>>> Exporter(5.73)
Net::SMTPS>>> Net::SMTP(3.13)
Net::SMTPS>>> Net::Cmd(3.13)
Net::SMTPS=GLOB(0x30816b0)<<< 220 DU2PR04CA0355.outlook.office365.com Microsoft ESMTP MAIL Service ready at Fri, 22 Oct 2021 09:15:28 +0000
Net::SMTPS=GLOB(0x30816b0)>>> EHLO localhost.localdomain
Net::SMTPS=GLOB(0x30816b0)<<< 250-DU2PR04CA0355.outlook.office365.com Hello [54.77.44.87]
Net::SMTPS=GLOB(0x30816b0)<<< 250-SIZE 157286400
Net::SMTPS=GLOB(0x30816b0)<<< 250-PIPELINING
Net::SMTPS=GLOB(0x30816b0)<<< …
Run Code Online (Sandbox Code Playgroud) 我已使用 PostgreSQL 二进制文件在本地计算机上设置了 PostgreSQL (v.15) 服务器。
我已经使用此链接生成了证书。
我已将证书存储在 c:/certs 中,并将它们复制到本地 PostgreSQL 服务器的数据文件夹(与postgresql.conf文件所在的文件夹相同)。我已将postgresql.conf配置为使用 SSL 和证书,如此图所示。
当我尝试使用 psql 连接到 PostgreSQL 服务器时,我希望它仅在提供有效证书时接受我的连接尝试,例如采用以下格式:
psql 'host=localhost port=5432 dbname=local-db user=admin sslmode=verify-full sslcert=c:/certs/cert.pem sslkey=c:/certs/cert-key.pem sslrootcert=c:/certs/ca.pem'
Run Code Online (Sandbox Code Playgroud)
但我希望当我不提供证书时它拒绝我的连接尝试,例如以下格式:
psql 'host=localhost port=5432 dbname=local-db user=admin'
Run Code Online (Sandbox Code Playgroud)
我假设我需要以特定方式配置 PostgreSQL 服务器的pg_hba.conf文件(它与证书和postgresql.conf文件位于同一文件夹中),并且我已经尝试了在互联网上可以找到的所有建议,但是我一直以服务器结束,要么允许上述两种连接尝试,要么两者都不允许,但决不允许其中之一而不是另一个。
我尝试按如下方式配置pg_hba.conf:
hostnossl all all 0.0.0.0/0 reject
hostssl all all 0.0.0.0/0 cert clientcert=verify-full
Run Code Online (Sandbox Code Playgroud)
但是,对于提供证书的连接,我收到以下错误:
psql: error: connection to server at "localhost" (::1), port 5432 failed: FATAL: no pg_hba.conf entry for …
Run Code Online (Sandbox Code Playgroud) 尝试在 Nginx (1.15.8) 中使用 TLS 1.3 证书,我发现官方 Nginx 是使用 openssl 1.1.0 构建的,而对于 TLS 1.3,则需要 openssl 1.1.1。
为了解决这个问题,我从源代码构建了自己的 openssl 1.1.1,然后从源代码构建了 nginx(使用我刚刚构建的 openssl)。它完美地工作。但是 - 我无法找到任何内置此支持的官方 Nginx 发行版。在 Debian 或任何其他 Linux 中。
有没有人试过这个并找到了一个官方的、预先构建的解决方案?
编辑:我在https://github.com/eldada/nginx-tls13-docker 中基于 Docker 的解决方案。
我想在我的 Spring Boot 应用程序中实现 TLS 1.3。
https://blog.gypsyengineer.com/en/security/an-example-of-tls-13-client-and-server-on-java.html
在此博客中,我看到 TLS 1.3 只能与 Java 11 一起使用。这是真的吗?
请给我一步一步地执行它。
我正在向第 3 方 api 发出网络请求,并且工作正常。在 API 的证书发生更改期间,现在当我从开发环境发出请求时,我收到响应,因为请求已中止,无法创建 SSL/TLS 安全通道。我尝试在代码中设置不同的协议,但响应没有变化。我在资源管理器中也遇到了不同的错误。但这在启用 SSL 3 后已得到解决。我在代码中使用 httpwebrequest。最初的 dll 位于 .net 3.5 中,现在已更新到 .net 4.6。在 Firefox 中检查证书详细信息时,我可以看到证书是 TLS 1.3。据我了解,.net 4.6.1 不支持它,因为当我设置 TLS 值时,出现协议不支持的错误。开发环境是 Windows Server 2016。相同的 API 在 Microsoft 云的生产环境中运行。不确定确切的服务器版本。
有什么办法可以解决这个问题吗?
更新 密码套件中不存在证书算法。按照以下文档添加密码套件,问题现已解决。
https://learn.microsoft.com/en-us/windows-server/security/tls/manage-tls
我是 JBoss Fuse 服务器的新手。我们使用的 Fuse 服务器版本是 7.2。根据位置undertow.xml
文件${karaf.home}/etc
,我们目前支持TLSv1
,TLSv1.1
和TLSv1.2
. 要求是添加更高版本(TLSv1.3
在这种情况下)。我想检查先决条件和可行性方面。
另外,我无法确定 Fuse 7.2 是否可以支持TLSv1.3
。
我们正在使用 Java 8。
任何可以引导我的信息/方向都受到高度赞赏。
我正在尝试在 python 中设置 tls 上下文。我想使用 TLSv1.3 强制:
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_3)
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我收到以下错误:
AttributeError: module 'ssl' has no attribute 'PROTOCOL_TLSv1_3'
Run Code Online (Sandbox Code Playgroud)
我使用的是 Ubuntu 20.04,使用的是 python 版本 3.8 和 openssl 版本 1.1.1f。
为什么不支持 TLSv1.3?
我们设置了“ ssl_early_data on; ”和“ proxy_set_header Early-Data $ssl_early_data ;” 在使用 openssl 1.1.1 构建的 nginx 1.15.6 配置中,但是当我们运行以下命令时,它显示 EarlyData 未发送。知道如何解决这个问题吗?
openssl s_client -connect www.rupeevest.com:443
SSL握手已读取4693字节并写入399字节
新,TLSv1.3,密码为 TLS_AES_256_GCM_SHA384 服务器公钥为 2048 位 不支持安全重新协商 压缩:无 扩展:无 未协商 ALPN 未发送早期数据
我使用wireshark捕获了在都支持TLSv1.3的客户端和服务器之间建立的TLSv1.3握手。我知道证书是以加密形式发送的,但我找不到任何字段表明我们在这里找到了加密证书。有什么帮助吗?
所以,一段时间以来,我一直试图弄清楚如何使用 tls 1.3 而不是 tls 1.2 颁发 SSL 证书,因为我不确定是否需要更改 OpenSSL.cnf 文件中的某些内容,或者是否需要添加一些东西吗?
这是我使用的扩展:
[ server_cert ]<br>
basicConstraints = critical, CA:FALSE<br>
nsCertType = server<br>
subjectKeyIdentifier = hash<br>
authorityKeyIdentifier = keyid,issuer:always<br>
keyUsage = critical, digitalSignature, keyEncipherment<br>
extendedKeyUsage = serverAuth<br>
<br>
Run Code Online (Sandbox Code Playgroud)
我如何添加 tls 1.3?