我有一台 Brother 激光打印机,通过以太网电缆连接到路由器。在 Brother 配置 Web 门户中,我执行以下操作:
- 禁用打印机上的所有无线功能
- 禁用除 IPP 和嵌套 AirPrint 之外的所有协议(后者强制启用 mDNS)
- 创建了一个自签名证书并将其安装在我的 Mac 上
- 禁用端口 80/HTTP,仅启用端口 443/HTTPS
由于 Mac 和 Chrome 无法验证证书的真实性,因此我手动将 SSL 和 X.509 信任策略设置为在 Keychain Access 中始终信任。
问题在于:
- 没有启用 AirPrint 后,我的 Mac 可以找到但无法添加打印机。尝试手动添加会导致打印失败。
- 和AirPrint,其他 Apple 设备无需安装证书即可找到并使用打印机!
- 即使在证书上设置了信任策略,Chrome 仍然认为与打印机的连接是
Not Secure
。
我的目标是确保打印机的安全,以便只有安装了证书的设备才能访问打印机。
答案1
通过 AirPrint,其他 Apple 设备无需安装证书即可找到并使用打印机!
结论:AirPrint 可能只是使用提供的 TLS 证书进行加密,而不执行任何信任检查
brother-printer-model-number-xyz.local.
使用 mDNS,您的 AirPrint 打印机将通过主机名或在 TLD 中分配为主机名的任何打印机名称被发现.local
。
那.local
domain 是特殊用途域名,无法在全球域名系统中解析。每个人都可以.local
在自己的网络内使用该顶级域名。
后果之一是该域名没有唯一的所有者/运营者。由于公共证书颁发机构无法识别所有者,因此他们无法建立信任链和CA 永远不会为该.local
域名颁发正式签名的 TLS 证书(与您无法让官方 CA 为“localhost”颁发证书的情况类似。)
由于永远不会有“有效”或“受信任”的证书颁发给可通过多播 DNS (mDNS) 和零配置网络 (zeroconf) 发现的打印机和其他设备,因此它们将始终具有自签名证书。参见脚注
我认为可以通过多种方式来解决这个问题。
一种方法是,当通过主机名发现打印机.local
并支持 TLS 证书时,对您的 AirPrint 驱动程序进行编程,使其根本不关心信任问题;然后只需接受并使用该证书进行加密,而不检查该证书是否真的可以信任。您将无法获得 TLS 可以提供的额外安全功能,但无论如何,您的打印作业仍将在传输过程中加密并受到保护,以免被窃听。
即使在证书上设置了信任策略,Chrome 仍然认为与打印机的连接不安全。
据我所知,Chrome 使用它自己的内部 CA 信任,而不使用 Apple/OSX 钥匙串。
例如,我的 (HP) 打印机的自签名证书包含在我的钥匙串中。Safari 将顺利连接到该打印机的 Web 界面,并在检查证书属性时显示:
铬合金
另一方面,同一台 Mac 上的 Chrome 仍然显示出巨大的危险信号:
脚注:.local
从技术上讲,当您操作自己的内部 CA 时,没有什么可以禁止您为网络中的主机 颁发签名的证书。