Dans Chrome 60, ils ont ajouté une fonctionnalité qui désactive crypto.subtle
pour les connexions non-TLS. Notre produit doit exécuter un serveur local et transmettre des connexions à distance sécurisées à localhost
pour des raisons de sécurité. Parce que localhost
n'est pas techniquement un domaine nommé, nous ne pouvons pas utiliser TLS - rendant effectivement crypto.subtle
inutilisable dans Chrome (et les navigateurs à base de chrome comme Opera), et nous obligeant à utiliser un shim moins sécurisé comme asmCrypto.js. Est-il possible de dire à Chrome d'activer crypto.subtle
à travers les en-têtes? Est-il possible de désactiver la nouvelle fonctionnalité dans les paramètres que nous pouvons dire aux utilisateurs (pire des cas)?Comment activer crypto.subtle pour des origines non sécurisées dans Chrome?
Répondre
Dans Chrome 60, ils ont ajouté une fonctionnalité qui désactive crypto.subtle pour les connexions non-TLS
Pas exactement, crypto.subtle
est désactivé pour les origines non sécurisées depuis la première version prise en charge (chrome 32?)
Mais localhost
est considéré comme une origine sûre https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features
« origines sécurisées » sont des origines qui correspondent à le ast un des formats suivants (schéma, hôte, port):
(https, *, *)
(WSS, *, *)
(*, localhost, *)
(*, 127/8, *)
(*, :: 1/128, *)
(fichier, *, -)
(chrome-extension, *, -)
Alors vous devriez pouvoir utiliser Web Cryptographi sur Apihttp://localhost
.
Utilisez-vous HTTPS pour votre site? Il se peut que vous ayez rencontré un problème lié au mélange de HTTPS et de HTTP. Chrome bloquera la connexion HTTP à localhost. Ensuite, vous pouvez générer un certificat auto-signé pour 127.0.0.1 et lancer votre serveur local avec HTTPS (similaire à @SLaks answer mais vous n'aurez pas besoin d'une entrée hosts
)
Vous devez créer une entrée CNAME ou hosts
pointant un domaine valide à 127.0.0.1
, puis obtenir un certificat (peut-être auto-signé) pour ce domaine.
En fait, nous ne pouvons même pas utiliser localhost pour une autre raison (ne me souviens pas pourquoi), mais 127.0.0.1 corrige ce problème et est identique (?) à localhost pour que cela fonctionne. –