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

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

作者: 夏威夷的芒果 | 来源:发表于2019-07-15 17:49 被阅读0次

    前情提要

    最近做一个项目,局域网内开发一台华为机器,但是机器上部署了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:
    

    得到文件:


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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/mlwnkctx.html