最近我一直在努力使用独立的DartVM和SSL作为客户端。我理解Dart使用Mozilla NSS来管理证书。我遇到的问题是,在Windows上,例如,我没有找到可以找到的二进制文件(除了第三方编译Mozilla源代码并上传到mega或类似文件,如果你问我,这非常令人担忧)发布的Windows平台。编译这个C ++代码并不是一项简单的任务。我没有资源在Windows平台下自行完成。这就是我首先编写Dart(或其他高级语言)的原因。
尽管如此,我在尝试安全连接并获得自签名(或技术上更正确,不受信任的权限)证书时得到的错误消息是操作系统本身不信任证书。在Windows上,情况并非如此。我正在使用的证书是我生成的CA根证书,具有适当的权限/签名链,手动安装到Windows受信任的根中。 Chrome和Internet Explorer(其中使用Windows底层证书存储区)在完成此操作后信任我的证书而没有任何警告。因此,如果DartVM在握手时没有使用“OS”来验证证书,那么该消息非常缺乏信息/误导。
在编译NSS之外可以做些什么来克服这个问题,并试图通过过于复杂和记录不足的步骤来弄清楚如何导入我的证书?在启动安全连接以忽略此类SSL错误时,是否没有可以指定的参数?
我的网络服务器强制使用HTTPS,因此退回到普通的HTTP会 对我来说不是一个选择。我也不想信任并且更不希望支付第三方的证书,因为我的证书几乎只在内部使用,这就是为什么我首先在我自己的根CA下生成通配符证书。为多个域名支付通配符证书,这些域名并不总是暴露给公众或供公众使用,这有点天文数字,而且完全不可能。