为什么iOS拒绝LetsEncrypt支持的证书

我正在尝试制作一个 Bitwarden iOS 应用程序与我的自托管 Bitwarden 服务器一起工作。该服务器由反向代理 (nginx) 支持。我使用 letsencrypt-powered certificate,以便通过 HTTPS 访问。它通过 web 界面工作正常 (不排除 iOS 15 中的 Safari),但在 iOS 应用程序中失败:

我正在尝试制作一个 Bitwarden iOS 应用程序与我的自托管 Bitwarden 服务器一起工作。该服务器由反向代理 (nginx) 支持。我使用 letsencrypt-powered certificate,以便通过 HTTPS 访问。它通过 web 界面工作正常 (不排除 iOS 15 中的 Safari),但在 iOS 应用程序中失败:

Error notification

虽然,这个应用程序似乎接受https://bitwarden.com的证书。至少它显示了身份验证错误,我认为 TLS 套接字是正常建立的。这个证书也是由 LetsEncrypt 提供支持的有趣的事情。一点也不好笑,实际上,这让我完全困惑。

我发现影响 iOS 15 的 TLS 证书的唯一要求在Requirements for trusted certificates in iOS 13 and macOS 10.15中有说明。它对证书施加了五个限制,似乎我的证书满足所有这些限制。这里是其文本表示的基本部分,带有相应的注释。

    Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            04:3a:cc:90:eb:09:ca:f2:76:60:11:30:1a:30:27:dc:64:1b
    //>>>>>>
    //>>>>>> TLS server certificates and issuing CAs must use a hash algorithm from the SHA-2 family in the signature algorithm
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Let's Encrypt, CN=R3
        Validity
            //>>>>>> 
            //>>>>>> TLS server certificates must have a validity period of 825 days or fewer
            Not Before: Nov 10 20:51:04 2021 T
            Not After : Feb  8 20:51:03 2022 T
        Subject: CN=bw.ivan-kondratyev.ru
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            //>>>>>> 
            //>>>>>> TLS server certificates and issuing CAs using RSA keys must use key sizes greater than or equal to 2048 bits.
                Public-Key: (2048 bit)
                Modulus:
                    00:c0:0b...
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            //>>>>>> 
            //>>>>>> TLS server certificates must contain an ExtendedKeyUsage (EKU) extension containing the id-kp-serverAuth OID.
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web  Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier: 
                FD:FF:3D:B7:C9:C3:B4:E2:6A:2E:1B:52:56:FC:B4:F8:78:84:9F:6E
            X509v3 Authority Key Identifier: 
                keyid:14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6
            Authority Information Access: 
                OCSP - URI:http://r3.o.lencr.org
                CA Issuers - URI:http://r3.i.lencr.org/
            //>>>>>>   
            //>>>>>> TLS server certificates must present the DNS name of the server in the Subject Alternative Name extension of the certificate
            X509v3 Subject Alternative Name: 
                DNS:bw.ivan-kondratyev.ru
            X509v3 Certificate Policies: 
                Policy: 2.23.140.1.2.1
                Policy: 1.3.6.1.4.1.44947.1.1.1
                  CPS: http://cps.letsencrypt.org

我的 nginx 配置有 ssl 相关参数:

    ssl on;
    ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         AES256-SHA:RC4-SHA:DES-CBC3-SHA;
    ssl_certificate /etc/letsencrypt/live/bw.ivan-kondratyev.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/bw.ivan-kondratyev.ru/privkey.pem; # managed by Certbot
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;

我非常感谢任何精通这个主题的人解释我做错了什么,是否有机会通过 iOS 15 利用自托管的 Bitwarden。

1

为什么 IOS 拒绝 LetsEncrypt 支持的证书?

错误消息没有具体说明证书问题,它看起来不像是证书问题。相反,SSL 配置是非常不安全的:

ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         AES256-SHA:RC4-SHA:DES-CBC3-SHA;

虽然 AES256-SHA 可能仍然是可以接受的,但其他密码被认为是几年不安全和过时的。iOS 可能不接受任何这些,因为这些都不提供前向保密,这会导致您看到的错误。

此外,提供 SSLv3 也是不安全的。

它通过 Web 界面工作正常

由于浏览器必须在各种各样的方面工作,它们通常更宽容,并且仍然可以使用稍微不安全的设置。在这种情况下,浏览器可能会选择 AES256-SHA 作为足够安全的。

对于应用程序,默认情况下通常会应用更严格的安全设置,因为假定应用程序的开发人员也控制后端,因此能够以更安全的方式进行设置。从这个角度来看,AES256-SHA 是不可接受的,因为它不提供前向保密。

我不确定您是如何提出这种不寻常的配置的,但是对于现代设置,请咨询moz://a SSL Configuration Generator

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(792)
如何在ReactRouterv4中推送到History
上一篇
复制树结构 包括叶子中的单个文件(nicky folder)
下一篇

相关推荐

  • ios外国id Discover the Benefits of an International ID

    iOS外国ID是一种特殊的Apple ID,它可以让用户在不同国家/地区的App Store中购买和下载应用程序。它允许用户使用不同于他们当前位置的付款方式,例如信用卡或PayPal账户,以购买应用程序。…

    2023-01-29 09:22:23
    0 85 88
  • ios placeholder颜色:如何使用iOS Placeholder颜色来提升用户体验

    iOS 颜色可以通过的属性来设置,如下:* = [[ alloc] :@"请输入文字"];…

    2023-01-29 04:45:52
    0 76 28
  • Ios网页越狱:在越狱的iOS设备上禁用TouchID

    关于Ios网页越狱的问题,在how to remove touch id on iphone中经常遇到,我正在尝试暂时禁用 TouchID 身份验证,以便即使手指匹配,手机也不会解锁。我该怎么做?有没有办法通过 com.apple.springboard.plist 以编程方式更新 Settings 中的开关,就像我对振动所做的那样?…

    2022-12-01 14:31:20
    0 88 21
  • Ios取消连续包月:iOS:取消链接库(unlink library codes)

    关于Ios取消连续包月的问题,在unlink library codes中经常遇到,当项目为模拟器构建时,有一个导致构建错误的库。…

    2022-11-25 10:41:59
    0 70 36
  • Ios完美越狱工具:越狱:在Xcode中开发 iOS命令行工具

    关于Ios完美越狱工具的问题,在jailbreak tool中经常遇到,所以我想写一个非常简单的命令行工具,供我在越狱的 iPhone 上个人使用,我可以在手机上本地运行 ssh 或任何终端应用程序。如果可能的话,我想将 Xcode 与苹果新的 Swift 语言一起使用。我看到使用 Xcode 可以创建一个“命令行工具”,但仅适用于 macOS(显然)。…

    2022-12-05 14:07:33
    0 33 77
  • 使用DocuSigniOS SDK下载完成的信封文档

    我使用的是native ios sdk。我已经创建了一个信封并签名。为了创建和签名信封,我使用了documentation和this主题中给出的建议。…

    2022-11-21 04:32:14
    0 20 60
  • 使用DocuSigniOS SDK下载完成的信封文档

    我使用的是native ios sdk。我已经创建了一个信封并签名。为了创建和签名信封,我使用了documentation和this主题中给出的建议。…

    2022-11-11 15:15:25
    0 28 24
  • css预编译器: center;}

    CSS预编译器是一种用于构建CSS的工具,它可以将CSS代码转换为更易于管理和维护的格式。它们可以使CSS代码更加灵活,更易于重用,并且可以帮助开发人员更轻松地组织和管理CSS代码。…

    2023-01-05 06:29:43
    0 38 94

发表评论

登录 后才能评论

评论列表(71条)