目的:在局域网内部使用https会弹出不是私密连接,我们想取消这一步骤,使得https在局域网中是信任的
1.现状描述
我们测试访问使用自签名证书的内网地址,发现提示不安全
我们想达到的效果:直接访问,左上角不提示不安全
2.工具介绍
如果要在局域网达到效果需要满足以下几点要求:
1 | 1. 证书由可信任的CA机构颁发 |
也就是说,我们需要做到以下几件事:
1 | 1. 需要在局域网内构建CA机构 |
这里我向大家介绍一个工具-mkcert
mkcert
mkcert是一个使用go语言编写的生成本地自签证书的小程序,具有跨平台,使用简单,支持多域名,自动信任CA等一系列方便的特性可供本地开发时快速创建https环境使用。
mkcert的浏览器根据操作系统的不同生效也不同:
mkcert supports the following root stores:
macOS system store
Windows system store
Linux variants that provide either
update-ca-trust
(Fedora, RHEL, CentOS) orupdate-ca-certificates
(Ubuntu, Debian, OpenSUSE, SLES) ortrust
(Arch)
Firefox (macOS and Linux only)
Chrome and Chromium
Java (when
JAVA_HOME
is set)
我这里使用Windows系统进行演示
2.1.1安装
首先去https://github.com/FiloSottile/mkcert/releases下载对应系统的版本
2.1.2安装根证书
打开文件保存的位置,在地址栏输入cmd打开命令提示符
可以把下载的文件改名便于输入,比如改成mkcert.exe
输入mkcert.exe -install来安装根证书
出现提示要选择是
出现下图提示就代表根证书已经安装好了
需要卸载则将install替换成uninstall即可
2.2自签证书
2.2.1生成自签证书
在命令行输入mkcert.exe <要生成的ip或域名>
然后回车,证书就会被保存在软件目录下,一张证书可以包含多个域名或ip
例
1 | mkcert-v1.4.3-windows-amd64.exe 192.168.1.5 192.168.1.6 |
控制台中表明生成了192.168.1.5+1.pem证书文件和192.168.1.5+1-key.pem私钥文件
2.2.2使用证书
在nginx中配置ssl用于测试
1 | server { |
这里开启443的ssl端口。根目录为F盘的111文件夹,111/static目录内有一张名为13.jpg的测试图片。
使用局域网电脑访问192.168.1.5/static/13.jpg会出现警告界面,这是因为这台电脑还没有安装根证书,接下来我们就来安装
2.3分发根证书
命令行执行mkcert.exe -CAROOT
查看根证书位置
这里的rootCA.pem就是你的根证书
我们需要将rootCA.pem复制一份并改名为rootCA**.crt**
将rootCA.crt拷贝给局域网的其他人,进行安装
2.4安装证书
存储位置选择本地计算机
现在访问测试
可以看到左上角变成安全标识,警告?页面也不会弹出。至此局域网就的ssl认证就完成了。