我不熟悉使用openSSL和cert,并且没有。
在我的接收器文件中,我正在使用SecurityContext来强制HTTP:
@override
SecurityContext get securityContext {
return new SecurityContext()
..usePrivateKey("SSL/key.pem", password: keypassword)
..useCertificateChain("SSL/cert.pem", password: certpassword);
}
我在本地开发并使用OpenSSL创建自签名密钥和证书。当通过aqueduct服务运行应用程序时,我没有任何问题(除了通过相应的浏览器确认我知道证书没有CA签名),但在运行我的测试时,我收到以下错误:
HandshakeException: Handshake error in client (OS Error:
CERTIFICATE_VERIFY_FAILED: self signed certificate(ssl_cert.c:345))
这是否意味着我需要使用CA签名证书来避免这种情况?
答案 0 :(得分:1)
默认情况下,如果服务器的SSL证书是自签名的,Dart HttpClient将失败。您可以覆盖它,但TestClient不会授予您访问底层HttpClient的权限。我们可以将该财产公之于众,但是......
测试主要用于测试应用程序逻辑。是否使用SSL并不重要。 aqueduct serve
具有SSL的CLI选项。在本地或通过测试运行时,您可以省略SSL。使用签名的SSL证书远程运行时,可以在启动时将密钥和文件路径添加到CLI args:
aqueduct serve --ssl-key-path SSL/key.pem --ssl-certificate-path SSL/cert.pem