我是否可以为发展目的允许无担保来源的地理位置?

时间:2016-07-23 15:33:32

标签: javascript google-chrome ssl geolocation homestead

我正在尝试开发一个使用javascript地理定位功能的网络应用。从版本50开始,Google Chrome has blocked access to its geolocation functions for origins not using HTTPS。当我将代码部署到生产环境(具有有效的SSL证书)时,这不是问题,但是对于开发,我只是使用hosts文件条目来预览在本地VM上运行的代码(特别是Laravel的{{3 }}),显然没有有效的SSL证书。

有没有办法配置Google Chrome以允许访问我的开发虚拟机上的地理位置功能,即使它是“不安全的来源”?或者,有什么方法可以配置Homestead,以便Chrome认为它是安全的吗?

3 个答案:

答案 0 :(得分:0)

这个问题的最简单答案是,Homestead实际上默认设置了自签名证书,因此通过HTTPS访问您的开发代码已经有效,尽管Chrome发出了无效的证书警告。但是,如果您接受该警告并同意继续访问不安全的网站, Chrome允许该网站使用地理位置,就好像它是安全的一样

但是,如果这不是你的想法,还有其他选择:

使用有效的SSL证书设置Homestead

如果您有生产网络服务器并控制公共域名,您可以使用certbot在该服务器上生成可信证书,然后将证书文件复制到您的Homestead框以使用而不是自签名证书自动生成。

此方法的缺点是证书certbot生成的证书仅在90天内有效,因此您需要每三个月重复此过程(或者您重新配置Homestead盒时)。

  1. 向您的DNS添加A记录,将您要用于开发的域(例如local-dev.yourdomain.com)定向到您的生产服务器。
  2. 生产服务器上的
  3. Install certbot,并运行certbot-auto certonly以生成local-dev.yourdomain.com的有效证书。
  4. 将文件/etc/letsencrypt/live/local-dev.yourdomain.com/fullchain.pem/etc/letsencrypt/live/local-dev.yourdomain.com/privkey.pem从生产服务器复制到Homestead框。
  5. 更新您的Homestead.yaml文件,以确保它将local-dev.yourdomain.com的请求定向到该框上的正确代码目录。
  6. 在您的Homestead框中,使用您在步骤3中下载的/etc/nginx/ssl/local-dev.yourdomain.com.crt/etc/nginx/ssl/local-dev.yourdomain.com.key文件(分别)覆盖文件fullchain.pemprivkey.pem
  7. 更新开发计算机上的hosts文件,将local-dev.yourdomain.com指向192.168.10.10(或在Homestead.yaml文件中指定的任何ip)。
  8. 通过https://local-dev.yourdomain.com访问您的网站,享受来之不易的绿色挂锁图标。
  9. 明确配置Chrome以将您的(非https)域视为安全

    Chrome有一个--unsafely-treat-insecure-origin-as-secure启动标志可用于此目的,但它需要使用不同的用户配置文件(可通过第二个标志设置)才能工作。

    来自Chromium wiki

      

    您可以使用--unsafely-treat-insecure-origin-as-secure =" http://example.com"运行chrome。标记(替换" example.com"使用您实际想要测试的原点),这会将该来源视为此会话的安全。请注意,您还需要包含--user-data-dir = / test / only / profile / dir来创建一个新的测试配置文件,以使该标志生效。

答案 1 :(得分:0)

使用您的配置(修改hosts文件以将域的DNS指向您的计算机),您可以使用例如加密来创建可信证书。

只是提到它,http://localhost被认为是安全的,并且chrome有一个--unsafely-treat-insecure-origin-as-secure启动标志,正如@ 4026在他的回答中提到的那样

答案 2 :(得分:0)

出于开发目的,我使用ngrok。您可以获得到localhost的安全隧道。这允许在本地调试webhook,测试移动应用程序或API,后端映射到http或https,非常易于安装和使用。

ngrok官方网站