J'essaie d'envoyer une demande au début, je pensais que c'était Un problème de validation de certificat, j'ai donc ajouté le code suivant avant d'envoyer la demande: p> s'avère que le Notez que mon URL de serveur distant est On dirait que la mise en œuvre mono utilisée par Unity ne prend pas en charge les suites ciphères de Heroku (je peux garantir cela parce que j'ai récemment développé une demande monotouch Cela a été capable de se connecter au même serveur). P> est-ce un problème client ou serveur? Devrais-je ajouter du code de hacky du côté du client ou si la configuration du serveur doit-elle être modifiée? P> P> ServerCertificateValidationCallback code> n'était même pas invoqué et L'exception était liée à "SSL uni" ou 'SSL Ciphers' . P>
https://_my_app_.herokuapp.com/_path_ code>.
Assez étrangement, si je change l'URL à tout autre serveur
https://www.google.com code> ou
https: //www.facebook. com code> Je ne comprends pas l'exception et la demande réussit. P>
4 Réponses :
Je n'ai pas de réponse complète, mais ce n'est pas une question de Ciphersuite; La StackTrace montre qu'il s'agit d'un problème de validation du certificat au niveau bas de vérification de la signature avant que votre rappel soit impliqué. OID 1.2.840.113549.1.1.11 est SHA256Withrsa, et le fournisseur de sécurité (S?) Dans le client ne le gère pas. Vous travaillez d'accord avec les serveurs traditionnels tels que Google et Facebook, car ils continuent d'utiliser CERTS SIGNÉ SHA1Withrsa, précisément parce que le support client / navigateur pour SHA256 + RSA n'est pas encore universel, bien que de plus en plus courant. https://cabforum.org/baseline-requirs-Documents/ nécessite RSA2048 cette année ( Janvier 2014) inconditionnellement, mais permet à SHA1 "jusqu'à ce que SHA-256 [Vérifier] soit largement soutenu par des navigateurs utilisés par une partie substantielle des fêtes de comptoir dans le monde entier." P>
OTOH SHA1 n'a pas encore de marge de sécurité, de nombreuses personnes poussent SHA256 et Digicert semble être parmi les pousseurs plus difficiles: http://www.digicert.com/transitioning-a-aaa-2.htm . Le certificat que je vois de Herokuapp.com a été publié récemment (2014-01-21) afin que cela puisse être un choix délibéré "Améliorerons la sécurité" ou juste "Utilisez ce qui est pratique et Digicert nous a donné cela". FWIW I Observez id.heroku.com et www.heroku.com Utilisez un certificat SHA1 + RSA (2048) à partir de 2013-10-12. Si vous ne pouvez pas obtenir votre client fixe pour SHA256 + RSA et Heroku est disposé, ils pourraient obtenir et utiliser un certificat SHA1 + RSA pour l'instant, mais vous aurez probablement besoin d'une vraie solution plus tard. p>
quant à cela, Comment Puis-je signer un fichier à l'aide de RSA et SHA256 avec .net? indique que pour (MS) DOT-NET Signature avec SHA256 + RSA doit jouer un fournisseur de crypto non par défaut et une vérification IME est généralement la même que la signature . Je n'utilise pas mono ou sais que si le même problème ou si le même problème s'applique là-bas, mais c'est la région où je voudrais regarder d'abord. P>
Je n'ai pas pu trouver la raison mais j'ai trouvé la solution pour le problème. P>
J'utilisais Unityhttp - une "bibliothèque HTTP basée sur tcpclient" - pour effectuer des demandes HTTP.
En passant à l'unité de l'unité WWW Class Tous https forts> envoyé à mon serveur Heroku a réussi. J'ai découvert que lorsque vous utilisez Peut-être Unityhttp code> L'unité de la bibliothèque tentative d'exécution de la validation
CrossDomain.xml code> sur le port 843, quant à l'utilisation de
www Class code> effectué une telle validation sur le port 80. P>
Unityhttp Code> La mise en œuvre de Stuffs de bas niveau qui n'est actuellement pas compatible avec les serveurs Heroku, je n'engagerai pas cela, mais je vais ouvrir un problème sur le
Unityhttp code> Le référentiel GITHUB de toute façon. P>
AS de l'unité 4.3, la version de mono de l'unité de l'unité ne prend pas en charge SHA-256 pour SSL CERTS. Le "meilleur" supporté est SHA-1. Nous avions utilisé Godaddy (je sais, je sais) pour émettre le cert et heureusement, ils avaient une page Web où nous pourrions retrouver le certificat de SHA-256 à SHA-1. Maintenant, le certificat SSL fonctionne bien. p>
Il sera presque impossible de trouver une autorité de certification qui émettra un certificat SHA-1 afin que vous fassiez à repousser. p>
La classe Web de l'unité d'unité est écrit en C ++ et ne passe pas par mono. C'est pourquoi vous pouvez vous connecter à HTTPS via www, mais pas via le plug-in Unityhttp. P>
Considérant que SHA-1 est amorti comme un certificat SSL valide Cette réponse n'est probablement pas un bon travail.
SHA-256 (algorithme 1.2.840.113549.1.1.11) devrait travailler avec l'unité à partir de 2,5,3. https://github.com/unity-technologies/mono/pull/134/files Vous êtes la bienvenue p>
Merci! Avez-vous une idée de combien de temps cela pourrait prendre pour cela pour en faire une libération unitaire?
Je suis sûr que vous savez bien, cela étant presque un an plus tard, mais cela a été corrigé depuis longtemps. :)