我正在尝试禁用在Docker(Debian OS)和.NET 5上运行的API的TLS 1.0和TLS 1.1支持。我发现这段代码与此特定问题相关:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(opt =>
{
opt.ConfigureHttpsDefaults(s =>
{
s.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13;
});
}).UseStartup<Startup>();
}
);
下面是Powershell脚本:
$HostName = 'YOUR_URL'
$Port = '443'
$RetValue = New-Object psobject -Property @{
Host = $HostName
Port = $Port
SSLv2 = $false
SSLv3 = $false
TLSv1_0 = $false
TLSv1_1 = $false
TLSv1_2 = $false
TLSv1_3 = $false
KeyExhange = $null
HashAlgorithm = $null
}
"ssl2", "ssl3", "tls", "tls11", "tls12","tls13" | %{
$TcpClient = New-Object Net.Sockets.TcpClient
$TcpClient.Connect($RetValue.Host, $RetValue.Port)
$SslStream = New-Object Net.Security.SslStream $TcpClient.GetStream(),
$true,
([System.Net.Security.RemoteCertificateValidationCallback]{ $true })
$SslStream.ReadTimeout = 15000
$SslStream.WriteTimeout = 15000
try {
$SslStream.AuthenticateAsClient($RetValue.Host,$null,$_,$false)
$RetValue.KeyExhange = $SslStream.KeyExchangeAlgorithm
$RetValue.HashAlgorithm = $SslStream.HashAlgorithm
$status = $true
} catch {
$status = $false
}
switch ($_) {
"ssl2" {$RetValue.SSLv2 = $status}
"ssl3" {$RetValue.SSLv3 = $status}
"tls" {$RetValue.TLSv1_0 = $status}
"tls11" {$RetValue.TLSv1_1 = $status}
"tls12" {$RetValue.TLSv1_2 = $status}
"tls13" {$RetValue.TLSv1_3 = $status}
}
# dispose objects to prevent memory leaks
$TcpClient.Dispose()
$SslStream.Dispose()
}
$RetValue
这是红隼配置的错误吗?我可以做其他事情来禁用TLS1.0和TLS1.1加密吗?
编辑这是我试图解决的原始问题:
远程服务接受使用TLS 1.0加密的连接。TLS 1.0有许多加密设计缺陷。较新版本的TLS是针对这些缺陷而设计的,应该尽可能使用。PCI DSS v3.1要求在2018年6月前完全禁用TLS 1.0,销售点终端及其终结点除外。截至2020年3月31日,不支持TLS 1.2及更高版本的终端将无法在主流web浏览器和主流供应商上正常运行。
由于. net 5似乎删除了禁用TLS版本的选项,而是必须在操作系统中禁用它。
Kestrel现在使用系统默认的TLS协议版本,而不是像以前那样限制与TLS 1.1和TLS 1.2协议的连接。
https://learn.microsoft.com/en-us/dotnet/core/compatibility/aspnet-core/5.0/kestrel-default-supported-tls-protocol-versions-changed
那么问题可能会变成:如何使用Debian在docker映像中禁用它,似乎可以通过dockerfile中的docker RUN OpenSSL命令来完成,以在OpenSSL或OpenSSL的配置文件中禁用它。
如何在OpenSSL中禁用TLS v1.0和TLS v1.1
在/etc/ssl/openssl中。oid_section后添加cnf:
openssl_conf = default_conf
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2
https://blog.surgut.co.uk/2019/08/how-to-disable-tls-10-and-tls-11-on.html
aspnet-core-webapi Esse é um projeto para futuras consultas de técnicas empregadas com ASP.NET Core 2.2 aplicando API-Guidelines da Microsoft. Técnicas RESTfull Autenticação JWT Swagger Versionamento
我的测试程序从以下URL运行HTTP服务器:HTTP://www.herongyang.com/jdk/https-httpsechoer-better-https-server.html 请帮助如何使java只接受TLS1.2连接。
我正在为PoC点构建我的dotnet core webapi服务,我关心的是为其他ARCH/Devs提供适当的指导。 “相同”方法签名的变化很少 公共动态获取(字符串名称=_defaultName) 公共IActionResult Get(字符串名称=_DefaultName) 获取公共异步任务(字符串名称=_defaultName) 撇开我为什么使用动态类型而不是自定义类型的讨论不谈,我试图理解
我正在使用React创建一个PWA,并使用Auth0作为身份提供者,使用JWT承载令牌作为身份验证。我将角色注入到我的JWT令牌中,这样客户端就可以限制用户可以使用的选项,我的工作非常好。 我现在想限制服务器端,这样就不能调用终结点,除非用户具有访问该终结点所需的必要角色。 令人烦恼的是,Auth0似乎不支持添加或声称aspnet核心似乎可以处理OOTB;它要求域在声明定义中的角色之前。ie,作为
我已经用Python 2.7开发了一个应用程序。但它只支持协议_TLSv1。我必须以某种方式使其与协议_TLSv1_1和协议_TLSv1_2兼容。我找不到任何图书馆或窍门。有必要升级Python版本吗? 请指导我或帮助我找到更好的解决方案。没有什么不碍事的解决方案吗?
我已经创建了自定义中间件类来验证JWT令牌。我在