如何设置 Dart 以使用 CA SSL 证书



我最近部署了一个为HTTP请求提供服务的Dart服务器应用程序。我想添加对HTTPS的支持,所以我一直在尝试将SSL添加到Dart服务器应用程序。

这个答案清楚地解释了如何将自签名SSL证书添加到Dart。但是,我想添加从 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

它似乎适用于引用问题中的示例代码。

不幸的是,

众所周知,Dart中的SSL管理非常缺乏。我多次报告了这一点,但Dart团队没有认真回答。如果您想对此问题做点什么,请为此问题加注星标:https://code.google.com/p/dart/issues/detail?id=20967

最新更新