嗨,我收到以下错误:
错误域= NSURLErrorDomain代码= -1202 \"此服务器的证书无效.您可能正在连接到假装为"server-prod.name-cloud.com"的服务器,这可能会使您的机密信息面临风险. \"UserInfo = {NSErrorFailingURLStringKey = https://server-prod.name-cloud.com/v3/project/session/926B9E6BE31B /,NSLocalizedRecoverySuggestion =您是否还要连接到服务器?,_ kCFStreamErrorDomainKey = 3,NSErrorFailingURLKey = https ://server-prod.name-cloud.com/v3/project/session/926B9E6BE31B /,_ kCFStreamErrorCodeKey = -9843,NSLocalizedDescription =此服务器的证书无效.您可能正在连接到假装为"server-prod.name-cloud.com"的服务器,这可能会使您的机密信息面临风险.}
我阅读了所有相关文档,我们应用了"常见故障"部分中的所有要求.
更多细节:
在我使用的应用程序中:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Run Code Online (Sandbox Code Playgroud)
注意 - 在生产中我总是使用HTTP,我留下NSAllowsArbitraryLoads,因为一些离岸测试人员可以将路由切换到HTTP进行调试.
My Spring Boot application is trying to connect to MongoDB Database. The configuration is added on application.yml file. The application was working completely fine locally till yesterday.
但是当今天我在本地主机上运行它时,我收到以下错误:
2020-12-03 14:59:03.763[0;39m [32m INFO[0;39m [35m10692[0;39m [2m---[0;39m [2m[ngodb.net:27017][0;39m [36morg.mongodb.driver.cluster [0;39m [2m:[0;39m Exception in monitor thread while connecting to server edugyanamcluster-shard-00-00.l4au7.mongodb.net:27017
com.mongodb.MongoSocketWriteException: Exception sending message
at com.mongodb.internal.connection.InternalStreamConnection.translateWriteException(InternalStreamConnection.java:551) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:433) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.sendCommandMessage(InternalStreamConnection.java:273) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:257) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:105) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:62) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:129) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) …
Run Code Online (Sandbox Code Playgroud) 我有 .NET 4.5.2 应用程序用于SmtpClient
发送电子邮件。该应用程序安装在Windows 2012 R2服务器上。当我禁用 TLS 1 和 TLS 1.1 并仅启用 TLS 1.2 时,应用程序停止发送邮件。我认为这是因为 .NET 4.5.2 不支持 v1.2。
我正在考虑以下步骤
1> 在 Windows Server 上禁用 TLS 1 和 TLS 1.1,仅启用 TLS 1.2。
2>在Windows服务器上安装.NET 4.8。
3>将应用程序的目标框架更改为4.8(在csproj和web.config中)并重新编译。
4>部署应用程序。
基于文档的 问题Starting with .NET Framework 4.7.1, WCF defaults to the operating system configured version
1>这仅适用于 WCF 还是 SMTP 也默认为操作系统配置的版本?
2> 或者我是否需要明确设置版本,例如System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
3> 现在是否可以设置版本 TLS 1.2,并且将来 TLS 1.3 可用时应用程序应自动默认为 TLS 1.3?(无需再次更改代码)
在我们的Windows 2012 Server R2上,我们需要禁用TLS 1.0.
但是我们运行.NET 4.5 Wcf服务.我们发现,如果我们禁用TLS 1.0,WCF服务不再运行,因为我们收到错误"现有连接被远程主机强行关闭".
.NET 4.5和.NET 4.5.1中是否默认启用了TLS 1.1/1.2?如果没有,我们假设是这样的,我们在WCF项目中强制项目使用TLS 1.1/1.2?
我们开始在PHP中使用Guzzle,其代码调用各种不同的API,其中一些不支持TLSv1.2,其中一些需要TLSv1.2.
迫使Guzzle使用最新协议的最佳方法是什么,除非我们知道它不会被识别?
我有一个简单的问题但无法在任何地方找到答案.我有一个WCF服务器应用程序.我希望它只使用TLS1.2.
我无法控制客户端,无法编辑计算机上的SCHANNEL设置.
我已经尝试了以下似乎只适用于传出连接(clientside)
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Run Code Online (Sandbox Code Playgroud)
除了每个代码TLS 1.2服务器端,有没有办法限制任何东西?
编辑:我正在使用net.tcp绑定并创建这样的绑定:
private static Binding CreateNetTcpBinding()
{
return new NetTcpBinding
{
ReceiveTimeout = TimeSpan.FromMinutes(10),
ReliableSession =
{
Enabled = true,
InactivityTimeout = TimeSpan.FromMinutes(1)
},
Security =
{
Mode = SecurityMode.Transport,
Transport =
{
ClientCredentialType = TcpClientCredentialType.Windows,
ProtectionLevel = ProtectionLevel.EncryptAndSign,
SslProtocols = SslProtocols.Tls12
},
Message =
{
AlgorithmSuite = SecurityAlgorithmSuite.xxx <-- not here on purpose,
ClientCredentialType = MessageCredentialType.Windows
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以告诉我在哪里检查当前连接的TLS版本(某些上下文),这也足够了!
先感谢您!
我正在尝试将最新的TLS 1.0实现(我没写过)更新为TLS 1.2.
作为第一步,我集成了将明文初始化向量放入记录的TLS 1.1更改.那不是问题.它似乎工作得很好,我可以阅读https://example.com
TLS 1.1,以及SSL Labs viewMyClient.html.
然后我适应了伪随机函数的TLS 1.2更改(对于大多数实际用途)P_SHA256而不是(更复杂和奇怪的)一半和一半MD5/SHA1 rigamarole.我第一次做错了,得到了一个无效的MAC错误,但这或多或少是我的一个错字,我修复了它.然后无效的MAC错误消失了.
但尽管如此,在发送ClientKeyExchange-> ChangeCipherSpec消息后,我从服务器返回"解密错误" (无论是相同的警报,https://google.com
还是我尝试的任何事情).我收集ChangeCipherSpec消息只加密一个字节,将其放入带填充和MAC等的消息中.
如果我随机调整一个字节的MAC,它会回到抱怨无效的MAC. 令我困惑的是,MAC本身是作为GenericBlockCipher的一部分加密的:
struct {
opaque IV[SecurityParameters.record_iv_length];
block-ciphered struct {
opaque content[TLSCompressed.length];
opaque MAC[SecurityParameters.mac_length]; // <-- server reads this fine!
uint8 padding[GenericBlockCipher.padding_length];
uint8 padding_length;
};
} GenericBlockCipher;
Run Code Online (Sandbox Code Playgroud)
更新: FWIW,我添加了一个失败的1.2读取的Wireshark日志
https://example.com
,以及一个运行1.1会话的日志,运行相同的代码,不包括P_SHA256 MAC更新:http://hostilefork.com/media/shared/stackoverflow/example-com-tls-1.2.pcapng(失败) http://hostilefork.com/media/shared/stackoverflow/example-com-tls-1.1.pcapng(成功)
那么,解密的问题到底是什么?填充似乎是正确的,就像在字节中加1或减1一样,我得到了无效的MAC错误. (规范说"接收方必须检查这个填充并且必须使用bad_record_mac警告来指示填充错误.",这是可以预期的.) 如果我在消息中损坏客户端-iv来自我以前加密的内容(只是在发送的版本中放入一个坏字节),这样做也给了我错误记录MAC.我希望破坏解密也是如此.
所以我对可能出现的问题感到疑惑:
最近部署了带有Active Directory和Exchange 2016的Windows 2016 Standard Server。
我们已针对服务器和客户端禁用了SSL 1.0、2.0和3.0,并禁用了TLS 1.0和TLS 1.1。
我们在系统日志中反复获得以下条目。是什么原因造成的,以及如何解决。
我正在启动一个全新的 PlanetScale 支持的项目,并使用 Prisma 设置。我按照此官方文档上的说明进行操作(除了更改数据库名称),在本地代理到数据库后,我发现自己无法运行npx prisma db push
命令,出现以下错误:
server does not allow insecure connections, client must use SSL/TLS
Run Code Online (Sandbox Code Playgroud)
我对数据库设置非常陌生,在此之前我从来不知道我需要配置任何这些连接,因为我认为它们是作为我正在使用的数据库设置的一部分来处理的。
我知道我通过 Prisma 使用的 mySql 在对数据库执行任何交互之前需要 SSL 或 TLS,但我还没有找到任何方法来为我的环境进行设置。
我看到有人提到要?tls={true}
在我的末尾添加内容DATABASE_URL
,但这没有任何作用。此外,鉴于所提供的内容DATABASE_URL
是由 PlanetScale 提供的
DATABASE_URL='mysql://un5pbmobnc73muwvbo77:************@us-east.connect.psdb.cloud/*******?ssl={"rejectUnauthorized":true}'
Run Code Online (Sandbox Code Playgroud)
我尝试更改{"rejectUnauthorized":true}
为 {"rejectUnauthorized":false}
. 这也没有改变什么。涉及对象的更复杂的解决方案是导致我的数据库完全找不到的参数。
我知道 SSL 已被弃用,我不应该使用它,但我不仅不知道如何正确地将 TLS 添加到我的 mySQL,而且正如您可能已经确定的那样,我发现自己有些无法完全掌握其概念完全实施。
Node.js TLS_EMPTY_RENEGOTIATION_INFO_SCSV
默认发送密码以保护自己免受POODLE攻击.
我试图通过使用自定义密码列表覆盖TLS密码来避免发送此密码(即使这可能会带来安全风险).
但是,TLS_EMPTY_RENEGOTIATION_INFO_SCSV
无论我做什么,Node.js都会继续发送密码.我试图故意避免发送此密码来模仿Firefox/Chrome的TLS协商.
这是我用来修改和检查节点发送的密码的代码:
var request = require('request');
var ciphers = [
'ECDHE-ECDSA-AES128-GCM-SHA256',
'ECDHE-RSA-AES128-GCM-SHA256',
'ECDHE-ECDSA-AES256-SHA',
'ECDHE-ECDSA-AES128-SHA',
'ECDHE-RSA-AES128-SHA',
'ECDHE-RSA-AES256-SHA',
'DHE-RSA-AES128-SHA',
'DHE-RSA-AES256-SHA',
'AES128-SHA',
'AES256-SHA',
'DES-CBC3-SHA'
].join(':');
var options = {
ciphers: ciphers,
secureProtocol: 'TLSv1_2_method',
url: 'https://www.howsmyssl.com/a/check'
};
request(options, function (error, response, body){
if (!error) {
console.log(body);
}
else {
console.log(error);
}
});
Run Code Online (Sandbox Code Playgroud)
有没有办法禁止在Node.js中发送此密码?
tls1.2 ×10
ssl ×8
c# ×3
.net ×2
wcf ×2
.net-4.8 ×1
curl ×1
encryption ×1
guzzle ×1
ios ×1
javascript ×1
mongodb ×1
mysql ×1
node.js ×1
nsurlsession ×1
openssl ×1
php ×1
planetscale ×1
prisma ×1
smtpclient ×1
spring-boot ×1
windows ×1