Выполнение тестов в акведуке с использованием SSL с использованием самозаверяющего сертификата приводит к ошибке
Я новичок в работе с openSSL и Cert делать и не делать.
В моем файле приемника я использую SecurityContext для форсирования HTTP:
@override
SecurityContext get securityContext {
return new SecurityContext()
..usePrivateKey("SSL/key.pem", password: keypassword)
..useCertificateChain("SSL/cert.pem", password: certpassword);
}
Я занимаюсь локальной разработкой и создал самозаверяющий ключ и сертификат, используя OpenSSL. Когда я запускаю приложение через акведук, у меня нет проблем (кроме подтверждения в соответствующем браузере, что я знаю, что сертификат не подписан CA), но при выполнении моих тестов я получаю следующую ошибку:
HandshakeException: Handshake error in client (OS Error:
CERTIFICATE_VERIFY_FAILED: self signed certificate(ssl_cert.c:345))
Означает ли это, что мне нужно использовать сертификат, подписанный CA, чтобы избежать этого?
1 ответ
По умолчанию Dart HttpClient не будет работать, если SSL-сертификат сервера является самоподписанным. Вы можете переопределить это, но TestClient не предоставляет вам доступ к базовому HttpClient. Мы могли бы сделать эту собственность публичной, но...
Тесты в основном для тестирования логики приложения. Используется ли SSL или нет, это не имеет большого значения. aqueduct serve
имеет параметры CLI для SSL. При работе локально или с помощью тестов вы можете опустить SSL. При удаленном запуске с подписанным сертификатом SSL вы можете добавить ключ и путь к файлу к аргументам CLI при запуске:
aqueduct serve --ssl-key-path SSL/key.pem --ssl-certificate-path SSL/cert.pem