Objective c iOS 13 TLS问题

Objective c iOS 13 TLS问题,objective-c,xcode,tls1.2,ios13,Objective C,Xcode,Tls1.2,Ios13,我已经安装了iOS 13 beta版并运行了包含大量网络请求的框架,但我遇到了以下错误: 2019-09-19 15:01:33.566811+0200 ---[395:25439] Connection 4: default TLS Trust evaluation failed(-9814) 2019-09-19 15:01:33.567022+0200 ---[395:25439] Connection 4: TLS Trust encountered error 3:-9814 2019

我已经安装了iOS 13 beta版并运行了包含大量网络请求的框架,但我遇到了以下错误:

2019-09-19 15:01:33.566811+0200 ---[395:25439] Connection 4: default TLS Trust evaluation failed(-9814)
2019-09-19 15:01:33.567022+0200 ---[395:25439] Connection 4: TLS Trust encountered error 3:-9814
2019-09-19 15:01:33.567110+0200 ---[395:25439] Connection 4: encountered error(3:-9814)
2019-09-19 15:01:33.569824+0200 ---[395:25439] Connection 4: unable to determine interface type without an established connection
2019-09-19 15:01:33.584952+0200 ---[395:25439] Task <D97FD611-0B48-4DCE-99C9-6A971E5E6524>.<4> HTTP load failed, 0/0 bytes (error code: -1202 [3:-9814])
2019-09-19 15:01:33.566811+0200---[395:25439]连接4:默认TLS信任评估失败(-9814)
2019-09-19 15:01:33.567022+0200---[395:25439]连接4:TLS信任遇到错误3:-9814
2019-09-19 15:01:33.567110+0200---[395:25439]连接4:遇到错误(3:-9814)
2019-09-19 15:01:33.569824+0200---[395:25439]连接4:在没有建立连接的情况下无法确定接口类型
2019-09-19 15:01:33.584952+0200---[395:25439]任务。HTTP加载失败,0/0字节(错误代码:-1202[3:-9814])
我试图找出问题的原因,但没有成功。有人能帮我吗?

苹果已经定义了TLS服务器证书,从iOS 13和macOS 10.15开始

所有TLS服务器证书必须符合iOS 13和macOS 10.15中的这些新安全要求:

TLS服务器证书和使用RSA密钥颁发CA必须使用大于或等于2048位的密钥大小。TLS不再信任使用小于2048位RSA密钥的证书

TLS服务器证书和颁发CA必须在签名算法中使用SHA-2系列的哈希算法。TLS不再信任SHA-1签名证书

TLS服务器证书必须在证书的使用者备选名称扩展名中显示服务器的DNS名称。证书的CommonName中的DNS名称不再受信任

此外,2019年7月1日之后颁发的所有TLS服务器证书(如证书的NotBefore字段所示)必须遵循以下指南:

TLS服务器证书必须包含包含id kp serverAuth OID的ExtendedKeyUsage(EKU)扩展

TLS服务器证书的有效期必须小于等于825天(如证书的NotBefore和NotAfter字段所示)

最后一点是:

违反这些新要求的TLS服务器连接将失败,并可能导致网络故障、应用程序故障以及网站无法在iOS 13和macOS 10.15的Safari中加载


我要补充一些额外的信息。要检查您的证书是否有效,您可以在Keychain Access中打开它并检查它是否包含正确的信息:

  • 在825天内到期
  • 签名算法不是SHA-1(可能是SHA-256)
  • 公钥大小不小于2048位
  • 有扩展的密钥使用扩展,用于“服务器身份验证”
  • 存在包含服务器DNS的主题替代名称扩展名

OpenSSL的配置示例:

[ ca ]
default_ca = CA_default
[ CA_default ]
default_md = sha256
default_days = 825
[ req ]
prompt             = no
default_bits       = 4096
distinguished_name = req_distinguished_name
x509_extensions     = req_ext
[ req_distinguished_name ]
countryName                = ...
stateOrProvinceName        = ...
localityName               = ...
organizationName           = ...
commonName                 = google.com
[ req_ext ]
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = google.com
DNS.2 = www.google.com
要生成新的密钥证书对,请运行以下命令:

openssl req -newkey rsa:4096 -nodes -keyout key.pem -x509 -out certificate.crt -days 825 -config config.cnf

这个问题有些可疑。“非答案”正在被提升投票,这表明存在某种共谋。@特洛伊敌人和答案来自“新”用户-他们不太可能只是偶然发现这个问题并决定发布非答案,你有没有提醒国防部注意?@luk2302我有,是的。我们是否可以验证旧证书并了解哪些指针出错。请提供帮助。如何验证我们正在使用的自签名证书。我有一个应用程序在iOS 13之前运行良好。我有这个TLS问题。在iOS端,我现在无法更改服务器中的任何内容,所以是否有办法绕过此问题。@Hussainchatriwala请检查我的答案。@Shubhandu请检查我的答案。我的密钥链中找不到自签名根证书,如何创建新的根证书?请帮忙。