De la manipulation d'un certificat de sécurité invalide à l'aide de MATLAB urlread commande
Je suis d'accéder à une base de données interne à l'aide de MATLAB urlread
commande, tout fonctionnait bien, jusqu'à ce que le service a été déplacé vers un serveur sécurisé (c'est à dire avec une adresse HTTPS plutôt que d'une adresse HTTP). Maintenant urlread
plus de succès récupère les résultats. Il donne une erreur:
Erreur de téléchargement d'URL. Votre connexion réseau peut être arrêté ou vos paramètres de proxy mal configuré.
Je crois que le problème est que le service est à l'aide d'un invalide le certificat numérique car si j'essaie d'accéder à la ressource directement dans un navigateur web, j'obtiens un "non fiables connexion" attention dont je suis capable de passer à travers par l'ajout du site à une liste d'exceptions. urlread
ne dispose pas d'une manière évidente de la gestion de ce problème.
Sous le capot urlread
est à l'aide de Java pour accéder à des ressources sur le web, et l'erreur est levée à cette ligne:
inputStream = urlConnection.getInputStream;
où urlConnection
est un objet Java: sun.net.www.protocol.https.HttpsURLConnectionImpl
.
Quelqu'un proposer une solution de contournement pour ce problème?
Je suis sur 2009a. J'ai vu la solution que vous avez associé, je ne pense pas que ce soit le problème. Je pense que le urlread fonction prend en charge https, mais ne peut pas gérer non valide les certificats de sécurité.
OriginalL'auteur Ian Hopkinson | 2009-10-28
Vous devez vous connecter pour publier un commentaire.
De considérer les éléments suivants de la classe Java. J'ai utilisé cette page comme référence:
C:\MATLAB\MyJavaClasses\com\stackoverflow\Downloader.java
MATLAB
Nous avons d'abord compiler la classe Java (on doit utiliser une version de JDK compatible avec MATLAB):
Ensuite, nous instancier et utiliser MATLAB:
Voici quelques URLs avec de mauvaises certificats SSL de test:
Mise à JOUR: je dois mentionner que, à partir de R2014b, MATLAB a une nouvelle fonction
webread
qui remplaceurlread
.merci pour la fixation du lien. FWIW, voici l'ancienne page captée par la Wayback Machine
Une autre solution consiste à importer le site web du certificat en question de confiance en MATLAB JRE de magasin de clés. Voir ici pour des instructions: mathworks.com/matlabcentral/answers/...
Comment pourrais-je aller sur la mise en œuvre de ce code si je suis en cours d'exécution R2015a sur OS X? Cela semble être une solution à un problème précis, je vais avoir, mais je n'ai presque pas de Java de l'expérience et je ne suis pas sûr de savoir comment mettre cette solution à utiliser. Merci pour l'aide
vous aurez besoin de l' Java JDK (doit être à la version 1.7.x) pour compiler le au-dessus de la classe Java
javac Downloader.java
, ajouter le répertoire à l'MATLAB chemin de classe Java comme ci-dessus (l'esprit le package de mise en page), et de l'utiliser de la classe à partir de l'intérieur de MATLAB. Donc, disons que vous avez~/dev/com/stackoverflow/Downloader.java
de la compilation, il produit~/dev/com/stackoverflow/Downloader.class
. Puis dans MATLAB vous ajoutezjavaaddpath('~/dev')
et l'utiliser commed = com.stackoverflow.Downloader()
OriginalL'auteur Amro
merci pour la solution. Il a travaillé, cependant, parfois, j'avais reçu l'exception suivante "java.io.IOException: L'émetteur ne peut pas être trouvé dans l'autorité de certification de confiance de la liste." et je n'étais pas en mesure de se débarrasser de cette erreur.
Donc, j'ai essayé une autre solution qui fonctionne bien. Vous pouvez utiliser le code Java suivant dans la fonction Matlab:
Meilleur,
Jan
OriginalL'auteur Jan
Note également que le "canonique" façon de résoudre ce problème consiste à importer le certificat dans MATLAB fichier de clés (c'est à dire, pas votre JVM du fichier de clés).
Cela est documenté ici: Mathworks sur l'utilisation non approuvée certificats SSL.
OriginalL'auteur lindelof