我最近部署了一个为 HTTP 请求提供服务的 Dart 服务器应用程序。我想添加对 HTTPS 的支持,所以我一直在尝试将 SSL 添加到 Dart 服务器应用程序。
This answer清楚地解释了如何向 Dart 添加自签名 SSL 证书。但是,我想添加从 SSL 提供商处购买的 SSL 证书。
SSL 提供商通过电子邮件发送了我的 4 个文件:
- 根 CA 证书 - AddTrustExternalCARoot.crt
- 中级 CA 证书 - COMODORSAAddTrustCA.crt
- 中级 CA 证书 - COMODORSADomainValidationSecureServerCA.crt
- 您的 PositiveSSL 证书 - my_domain.crt
我一直在努力弄清楚 certutil
是如何工作的,以及如何将这些证书添加到证书数据库中,但我就是想不通。
有人有在 Dart 中启用 CA SSL 证书的经验吗?
已解决:感谢评论中的建议,我解决了这个问题。这是我完整设置的要点:https://gist.github.com/stevenroose/e6abde14258971eae982
最佳答案
首先,您可能已经使用 openssl 为您的私钥、服务器证书和 CA 证书生成了三个文件。要将所有这些转换为 PKCS12 文件,您可以使用 openssl:
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt -certfile CAcert.crt
然后,您可以调整所示的 certutil 命令以加载 PKCS12 而不是生成新证书:
certutil -N -d sql:certdb
certutil -A -n mycertnick -i server.crt -t "TCu,Cu,Tuw" -d sql:certdb
certutil -A -n myCA -i CAcert.crt -t "TCu,Cu,Tuw" -d sql:certdb
pk12util -i server.p12 -d sql:certdb
它似乎适用于所引用问题中的示例代码。
关于ssl - 如何设置 Dart 以使用 CA SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27161403/