Ich versuche, mich mit dem Intranet meiner Schule zu verbinden. Eine Verbindung mit allem außer Dart ist möglich (in Python, PHP, mit curl -s -L "https://intra.42.fr/?format=json"
und so weiter).
Aber die Dart-VM betrachtet das TLS-Zertifikat, das an meiner Schule verwendet wird, als schlecht. Mit diesem Code:
# pubspec.yaml
name: handshake-fail
dependencies:
http: any
import 'package:http/http.dart' as http;
main() {
var client = new http.Client();
client.post('https://intra.42.fr/?format=json', body: {"login": "test", "password": "test"})
.then((response) => print(response.body)
);
}
Ich bekomme die folgende Ausnahme:
Uncaught Error: HandshakeException: Handshake error in client (OS Error: Peer's Certificate issuer is not recognized., errno = -8179)
Unhandled exception:
HandshakeException: Handshake error in client (OS Error: Peer's Certificate issuer is not recognized., errno = -8179)
#0 _rootHandleUncaughtError.. (dart:async/zone.dart:700)
#1 _asyncRunCallbackLoop (dart:async/schedule_microtask.dart:23)
#2 _asyncRunCallback (dart:async/schedule_microtask.dart:32)
#3 _asyncRunCallback (dart:async/schedule_microtask.dart:36)
#4 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:119)
Die Frage Bypass Certificate Error Using Http verweist auf einen Fehlerbericht der vorschlägt:
Optionale Parameter für [
SecureSocket
].initialize
erlauben es Ihnen, eine Zertifikatsdatenbank (ein Verzeichnis mitcert9.db
undkey4.db
) zu spezifizieren, und ob die integrierten bekannten Autoritäten verwendet werden sollen.
Meine Frage ist, wie man das macht?