TL; DR: Nó phải làm với các mật mã SSL Máy chủ Firebase cho phép (ATS yêu cầu ECDHE chỉ ra khỏi hộp).
Như đã đề cập, các workaround trong Info.plist là thêm những điều sau đây:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>firebaseio.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
Trong ATS docs, Apple chỉ cho phép sau đây ra khỏi hộp:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
Thiết lập NSThirdPartyExceptionRequiresForwardSecrecy
gắn cờ đến NO
trong Info.plist thêm các địa chỉ bổ sung sau:
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
Tôi không đồng ý với việc đặt tên cho cờ là "... ExceptionRequiresForwardSecrecy" vì kỹ thuật DHE cung cấp tính bảo mật chuyển tiếp hoàn hảo, nó chỉ chậm hơn so với các phiên bản ECDHE tương đương. Âm thanh với tôi như có nên có hai lá cờ, một là ngoại lệ để chuyển tiếp bí mật và một trong đó chỉ nói rằng bạn đang cảm thấy thoải mái có một cái bắt tay chậm hơn.
Về mặt kỹ thuật, bạn cũng có thể đặt tên miền trừ <your-firebase-app>.firebaseio.com
và không có cờ NSIncludesSubdomains
, nhưng tôi muốn làm cho điều này đủ chung chung.
Vì chúng tôi cho phép mật mã không phải ECDHE, Firebase sẽ không cho phép phía máy chủ làm việc này ra khỏi hộp (trừ khi nhà phát triển muốn bắt đầu rối tung với các công cụ cấp thấp hơn NSURLRequest, xem this SO post để biết thêm thông tin về định cấu hình Mật mã SSL, nhưng bạn sẽ dành nhiều thời gian làm việc đó hơn là thêm một vài dòng vào Info.plist).
Bảo mật, chúng tôi đang cung cấp các phiên bản so sánh cùng mật mã, không sử dụng phiên bản Elliptic Curves (cung cấp cải thiện hiệu suất tốt, nhưng loại trừ một số trình duyệt nhất định [đặc biệt là trình duyệt di động]). Thông tin thêm về DHE và ECDHE (và một số nền tảng SSL khác tốt đẹp là w.r.t Forward Secrecy là here).
Đối với những gì nó có giá trị, khách hàng thời gian thực không có vấn đề này, vì vậy tôi rất muốn giới thiệu cách sử dụng những kinh nghiệm cho một căn cứ hỏa lực tốt hơn :)
Thật khó để đoán những gì iOS là không hài lòng về từ lỗi đó. Nếu bạn tìm cách tìm hiểu thêm thông tin chi tiết về lỗi, hãy gửi email cho chúng tôi theo địa chỉ [email protected] và chúng tôi có thể xác định xem iOS có không thích gì về cấu hình SSL của chúng tôi hay không. –
cảm ơn bạn. Tôi sẽ sao chép thông báo lỗi và hỗ trợ qua email. – User5103156