iOS 13 TLS问题

Dra*_*sic 7 xcode objective-c 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-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])
Run Code Online (Sandbox Code Playgroud)

我试图找出导致该问题的原因,但没有成功。谁能帮我?

Igo*_*din 11

我将添加一些额外的信息。要检查您的证书是否有效,您可以在 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
Run Code Online (Sandbox Code Playgroud)

要生成新的密钥证书对,请运行以下命令:

openssl req -newkey rsa:4096 -nodes -keyout key.pem -x509 -out certificate.crt -days 825 -config config.cnf
Run Code Online (Sandbox Code Playgroud)


Mat*_*ini 9

从iOS 13和macOS 10.15开始,Apple 为TLS服务器证书定义了更严格的规则

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

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

TLS服务器证书和颁发CA 的签名算法必须使用SHA-2系列的哈希算法。不再信任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中。

  • 有什么方法可以验证我们的旧证书并了解哪些指针出了问题。 (3认同)