1

我用 certutil 创建了一个数据库

myproject/bin/pkcert
echo "dartdart" > pwdfile
certutil -N -d 'sql:./' -f pwdfile

然后,我导入由权威机构验证的证书

certutil -d "sql:./" -A -t "C,C,C" -n "my_cert" -i certificate.crt

我检查它是否有效

certutil -L -d 'sql:./'
Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

my_cert                                                      C,C,C

我的 main.dart

library main;

import "dart:io";

void main() {
  var testPkcertDatabase = Platform.script.resolve('./pkcert')
                                   .toFilePath();
  SecureSocket.initialize(database: testPkcertDatabase,
                          password: 'dartdart');

  HttpServer
      .bindSecure(InternetAddress.ANY_IP_V6,
                  8443,
                  certificateName: 'my_cert')
      .then((server) {
        server.listen((HttpRequest request) {
          request.response.write('Hello, world!');
          request.response.close();
        });
      });
}

我执行,我得到这个错误:

Uncaught Error: CertificateException: Cannot find server certificate by nickname: my_cert (OS Error: security library: read-only database., errno = -8126)

我错过了什么或者我应该报告一个错误?

谢谢你。

4

1 回答 1

0

您是否尝试过添加-s "cn=mycert"

certutil -d "sql:./" -A -t "C,C,C" -n "my_cert" -i certificate.crt

并将其与

HttpServer
  .bindSecure(InternetAddress.ANY_IP_V6,
              8443,
              certificateName: 'CN=my_cert')

如这篇博文 http://jamesslocum.com/post/70003236123所示?

于 2014-09-16T16:11:22.923 回答