解决局域网内开发https请求的证书问题

前情提要

最近做一个项目,局域网内开发一台华为机器,但是机器上部署了Nginx负载均衡,众所周知Nginx部署完成以后会强制https

遇见了什么问题

欧拉机器上的证书是华为域名的证书,由于我们使用局域网,局域网内的地址是192开头,此证书在局域网域名内失效,因而通过https方式访问时会出现风险提示。

浏览器的风险提示需要点击“忽略风险,仍要访问”才能访问不安全页面

华为的证书只管华为的域名

浏览器勉强还可以用,因为证书的风险提示可以手动忽略.
但是当使用Python测试相关的开发接口的时候,其会返回错误警告,比如使用内置requests的时候就会返回SSL Error

尝试解决

在这种情况下,解决SSL Error的方法一般有两个

  • 全局禁用SSL验证
    方法是在加入如下代码:
#强制要求ssl有时候会抽风,为避免ssl证书问题,这里禁用ssl
import ssl
ssl._create_default_https_context = ssl._create_unverified_context    
  • requests的可选参数中关闭SSL验证
requests.get(url,verify = False)

或者依照请求方式的不同

requests.post(url,data,verify = False)

结果呢?不报错了,直接返回404,啊,被拒绝了!!!

'<html>\r\n<head><title>404 Not Found</title></head>\r\n<body>\r\n<center><h1>404 Not Found</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n'

Nginx真是个倔强的服务哈哈哈

查资料

发现已有大佬给出相关的参考

需要我们怎么做呢?

自己签发一个SSL证书,要求包含内网主机域名即可。
需要如下几步骤:

  1. 使用mkcert建立包含目标内网地址的的证书
  2. 使用openssl工具将证书转化成需要的格式

动手解决

1.安装mkcert

$ brew install mkcert
Downloading https://homebrew.bintray.com/bottles/mkcert-1.3.0.mojave.bottle.
######################################################################## 100.0%
==> Pouring mkcert-1.3.0.mojave.bottle.tar.gz
  /usr/local/Cellar/mkcert/1.3.0: 6 files, 4.8MB
  1. 生成证书的pem文件和key_pem文件
$ mkcert -install
$ mkcert [可选多个ip地址,以空格相隔]
Using the local CA at "/Users/[用户名]/Library/Application Support/mkcert" ✨
Warning: the local CA is not installed in the Firefox trust store! ️
Run "mkcert -install" to avoid verification errors ️

Created a new certificate valid for the following names 
 - "IP地址1"
 - “IP地址2”
 - ……

The certificate is at "./证书文件.pem" and the key at "./证书KEY文件.pem" ✅

这两个证书文件的输出的目录一般是/Users/[用户名]

  1. 安装openssl
$ brew install openssl  
  1. 找到openssl的文件夹地址
$ which openssl
  1. 双击目标文件夹内的openssl运行,进入openssl的shell
    比如要把这两个证书文件转化为pfx格式,命令如下
OpenSSL>  pkcs12 -export -out [输出文件.pfx] -inkey [证书KEY文件]  -in  [证书文件]

请注意以上文件最好都填绝对路径

例如:

OpenSSL> pkcs12 -export -out /Users/miraco/FriJob/HuaweiCam/cert/atlas_local.pfx -inkey /Users/miraco/localhost+2-key.pem -in /Users/miraco/localhost+2.pem 

会让你设置密码

Enter Export Password:
Verifying - Enter Export Password:

得到文件:


导入局域网的服务器就行了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。