今天一大早上班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...