今天一大早上班Chrome浏览器提示已经自动升级(Version 63)须要重启浏览器,重启以后发现本地的开发环境打开不,缘由是新版的浏览器强制将http转换成https了,而我本地的开发环境没有启用https。解决方案有两种:html
第一种方式比较简单,在浏览器地址栏中输入chrome://net-internals/#hsts。在Delete domain 栏的输入框中输入要http访问的域名,而后点击delete地按钮,便可完成配置。而后你能够在Query domain栏中搜索刚才输入的域名,点击逗query地按钮后若是提示逗Not found即为成功。可是,我同事们用此方法都成功了,就我没有成功,无奈。。。遂研究第二种解决方案。node
对于第二种解决方案,网上找了几个中文教程,可是新版本的浏览器已经再也不适用。最后仍是在强大的Google的帮助下找到此篇英文博客。https://deliciousbrains.com/https-locally-without-browser-privacy-errors/ 有兴趣的能够阅读原文,本文也并无逐字翻译原文。教程也只适用于Mac系统,Windows系统尚未研究。nginx
本教程假设本地域名为test.local
git
建立生成证书所需的配置文件,文件内容以下:chrome
[ req ] default_bits = 2048 default_keyfile = server-key.pem distinguished_name = subject req_extensions = req_ext x509_extensions = x509_ext string_mask = utf8only [ subject ] countryName = Country Name (2 letter code) countryName_default = US stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = NY localityName = Locality Name (eg, city) localityName_default = New York organizationName = Organization Name (eg, company) organizationName_default = Example, LLC commonName = Common Name (e.g. server FQDN or YOUR name) commonName_default = Example Company emailAddress = Email Address emailAddress_default = test@example.com [ x509_ext ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment subjectAltName = @alternate_names nsComment = "OpenSSL Generated Certificate" [ req_ext ] subjectKeyIdentifier = hash basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment subjectAltName = @alternate_names nsComment = "OpenSSL Generated Certificate" [ alternate_names ] DNS.1 = test.local
注意将文件的最后一行的改为本身的域名DNS.1=test.local
。将文件保存并命名为test.local.conf
。浏览器
openssl req -config test.local.conf -new -sha256 -newkey rsa:2048 -nodes -keyout test.local.key -x509 -days 365 -out test.local.crt
生成证书时,会有一系列问题须要填写,其余的问题均可以敲回车直接跳过,只将common name填写成你的域名,例如:dom
Common Name (e.g. server FQDN or YOUR name) []:test.local
命令运行成功会在当前目录下生成两个文件:test.local.crt
, test.local.key
工具
关键的Nginx配置以下,其余部分省略:ui
server { listen 80; listen 443 ssl http2; server_name test.local; ssl on ssl_certificate /etc/nginx/ssl/test.local.crt; ssl_certificate_key /etc/nginx/ssl/test.local.key; ... }
重启nginx后,打开Chrome浏览器输入https://test.local,此时浏览器应该会提示Your connection is not private。打开浏览器调试工具,选择security选项卡,显示以下:spa
将红框中的证书图标拖到桌面,会在桌面生成一个以cer为后缀的文件,双击文件,打开Keychain Access(须要输入密码)
以后会打开一个列表:
找到test.local的证书并双击,打开以下对话框:
点击红框中的下拉菜单,将其设置为Always trust,而后关闭对话框(会再次要求输入密码确认)。完成以后,刷新浏览器页面便可正常打开,而且显示已经正常启用https。
参考文章:
https://deliciousbrains.com/h...
https://zhidao.baidu.com/ques...