前段时间客户一个涉及地理定位功能的页面突然出问题不能正常使用,在修复的过程中发现定位的方法 getCurrentPosition 只能在 https 协议下才能成功调用,这导致我在本地不能调试,每次修改完必须上传到生产环境,可以想象这整个过程是多么痛苦。于是这几天特地学了下如何在本地启用 https ,并将它记录下来以备不时之需:

1、安装 openssl

npm install openssl

2、建立服务器私钥 —— 私钥最好建立在服务区的根目录下(我本地用的是 nginx)

openssl genrsa -des3 -out server.key 1024

在这个过程中需要输入密码短语,需要记住这个密码,后面会用到

3、生成安全证书

openssl req -new -key server.key -out server.csr

这一步需要手动输入如下内容:

  • Country Name(国家:中国填写CN)
  • State or Province Name(区域或是省份,如:Shanghai)
  • Locality Name(地区局部名字,如:Shanghai)
  • Organization Name(机构名称:填写公司名)
  • Organizational Unit Name(组织单位名称:部门名称)
  • Common Name(网站域名)
  • Email Address(邮箱地址)
  • A challenge password(输入一个密码)
  • An optional company name(一个可选的公司名称)

此时会在当前目录生成 server.csr 文件,然后依次执行如下命令:

 
cp server.key server.key.org

openssl rsa -in server.key.org -out server.key

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

4、配置 Nginx —— 在 Nginx 中找到你想要配置的域名的 .conf 文件写入如下配置内容

  • listen 443 ssl; (端口号并开启ssl)
  • server_name xxx.xxx.com; (域名)
  • ssl_certificate /... /server.crt; (证书在本机的路径)
  • ssl_certificate_key / ... /server.key; (key在本机的路径)

  ……

5、安装证书 —— 双击 server.crt 即可安装证书,安装完后会打开钥匙串,里面包含很多证书和应用程序秘密,刚刚安装好的证书也在里面,双击打开该证书 -> 点击信任左边的三角按钮 -> 设置“使用此证书时”的选项为“始终信任”
 
重启 Nginx ,用 Safari 打开本地 https 网站已经没有问题了,但用 Chrome 打开本地 https 网站仍然提示安全问题,没关系我们可以无视强行访问,毕竟我们开启 https 只是为了方便开发而已。
 
6、配置Charles —— 到第五步其实已经可以在 pc 端启用 https 了,但若想在手机端访问本地 https 还需通过 Charles 来代理:

  1)选择 帮助 -> SSL代理 -> 安装 Charles Root 证书 -> 设置 Charles Root 证书为始终信任

  2)打开 Charles 代理设置,勾选 “启用透明HTTP代理”,注意,这里不要勾选使用动态端口,后面配置手机端时候需要这里有个固定的端口,我这里设置的端口是8989。

  3)打开 Charles 的 SSL 代理设置,并添加主机和端口,https 端口一般为443,主机建议用 * ,这样可以避免以后频繁改动。

7、配置手机 —— 想要手机访问到电脑本地的主机有个前提,手机和电脑须处于一个局域网里,所以手机不能用4G,需要改成 wifi。

  1)下载 Charles 根证书: 在浏览器中打开 chls.pro/ssl,按照提示点允许;

  2)打开 设置 -> 通用 -> 描述文件与设备管理 安装刚刚下载的文件;

  3)打开:设置 -> 通用 -> 关于本机 -> 证书信任设置,找到刚刚安装的 Charles 证书将其设为信任;

  4)选择 设置 -> 无线局域网 -> 当前wifi -> 配置代理 -> 手动,输入服务器 ip 地址和端口,服务器 ip 即电脑在局域网中的 ip 地址,端口就是刚刚在 Charles 配置的代理端口,我这里是8989,填完别忘记存储。

  至此就开启了完整的本地 https,可以同时在电脑和手机上进行调试。

在本地环境(mac)启用https的更多相关文章

  1. 使用本地自签名证书为 React 项目启用 https 支持

    简介 现在是大前端的时代,我们在本地开发 React 项目非常方便.这不是本文的重点,今天要分享一个话题是,如何为这些本地的项目,添加 https 的支持.为什么要考虑这个问题呢?主要有几个原因 如果 ...

  2. 在 SharePoint Server 2016 本地环境中设置 OneDrive for Business

    建议补丁 建议在sharepoint2016打上KB3127940补丁,补丁下载地址 https://support.microsoft.com/zh-cn/kb/3127940 当然不打,也可以用O ...

  3. 【转】Tomcat启用HTTPS协议配置过程

    转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/53001846 http://www.ganecheng.tech/blog/530 ...

  4. 关于启用 HTTPS 的一些经验分享(一)

    转载: 关于启用 HTTPS 的一些经验分享(一) 随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.就在今天,免费提供证书服务的 Let's Encrypt ...

  5. 【转】关于启用 HTTPS 的一些经验分享

    随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.HTTPS 通过 TLS 层和证书机制提供了内容加密.身份认证和数据完整性三大功能,可以有效防止数据被查看或篡 ...

  6. 关于启用 HTTPS 的一些经验分享

    https://imququ.com/post/sth-about-switch-to-https.html 随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS. ...

  7. 以太坊remix-ide本地环境搭建

    remix-ide简介 ​ remix-ide是一款以太坊官方solisity语言的在线IDE,可用于智能合约的编写.测试与部署,不过某些时候可能是在离线环境下工作或者受限于网速原因,使用在线remi ...

  8. 如何免费的让网站启用https

    本文源自酷壳:如何免费的让网站启用HTTPS 今天,我把CoolShell变成https的安全访问了.我承认这件事有点晚了,因为之前的HTTP的问题也有网友告诉我,被国内的电信运营商在访问我的网站时加 ...

  9. gitlab 启用HTTPS

    NGINX设置 启用HTTPS 警告 Nginx配置会告诉浏览器和客户端,只需在未来24个月通过安全连接与您的GitLab实例进行通信.通过启用HTTPS,您需要至少在24个月内为您的实例提供安全连接 ...

随机推荐

  1. Python3+Appium学习笔记05-报错及解决方法

    记录一下使用期间各种报错和解决方法,毕竟搜了半天才找到解决方法.另外提示一下.优先看官方文档. 报错前面都是一样,就是说在处理的时候,服务器发生了一个未知的错误.然后才是具体报错信息 1)seleni ...

  2. Java基础- TreeMap<Person,Integer> 实现的定制排序(Comparator 接口)

    测试内容: TreeMap<Person,Integer> 的两级排序 1.先按Person.id 从小到大 (需要把int类型转换成包装类 Integer, 才可以使用p1.getId( ...

  3. Wannafly挑战赛24-A-石子游戏--【思维题】

    链接:https://www.nowcoder.com/acm/contest/186/A 来源:牛客网 石子游戏 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他 ...

  4. 基于JQ的记忆翻牌游戏

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...

  5. SVN错误之“copy admin area is missing”

    1.将对应冲突的文件夹备份一份 2.再复制一份到别的地方,资源管理器搜索.svn全部删除掉 3.删掉本地svn目录里的冲突文件,update一下父目录,显示ok 4.把刚才删掉.svn的目录复制覆盖过 ...

  6. js.map文件意义(转)

    什么是source map文件 source map文件是js文件压缩后,文件的变量名替换对应.变量所在位置等元信息数据文件,一般这种文件和min.js主文件放在同一个目录下. 比如压缩后原变量是ma ...

  7. mybatis 批量删除添加

    mybatis使用foreach进行批量插入和删除操作   转发与    https://www.cnblogs.com/Amaris-Lin/p/8615977.html     一.批量插入 1. ...

  8. java+web+多级文件上传

    文件夹数据库处理逻辑 publicclass DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject(); ...

  9. Doki Doki Literature Club ZOJ - 4035

    Doki Doki Literature Club ZOJ - 4035 题解:其实就是简单排序输出就没了. #include <cstdio> #include <cstring& ...

  10. python爬虫demo01

    python爬虫demo01 1 import requests, json, time, sys 2 from bs4 import BeautifulSoup 3 from contextlib ...