如何自签证书
一、问题
很多服务或者开源软件部署时要求必须使用https和域名访问,如果没有公网IP,部署在内网,应该怎么支持内部域名和https访问呢?
二、方案
使用openssl命令可以生成私钥和证书。这里介绍一种更简单的方式:使用工具mkcert。
以mac为例,使用方法如下:
- 安装:
brew install mkcert - 安装到本地根证书,否则浏览器会提示“不安全”:
mkcert -install - 生成站点证书,把
example.com替换为你的域名:mkcert example.com。把生成的私钥和证书文件配置到网站中比如Nginx配置文件中
1 | server { |
上面配置完成后,服务器本地Chrome浏览器https访问正常,不会提示“不安全”。但是对于其他主机上chrome浏览器https访问会提示“不安全”。
原因是网站https证书不能通过客户端主机的CA认证。解决方法是把服务端生成的mkcert根证书安装到客户端主机上。操作步骤如下:
- 从网站服务端主机上找到mkcert根证书。mac下“钥匙串访问” -> “系统根路径” 下找名字以
mkcert开头的证书。根证书“签发者机构”和目标“组织“应该是同一个人,这里是”mkcert development CA“

- 右键证书导出为cer根证书文件
- 把根证书文件通过scp或者其他方式拷贝到客户端机器上
- 以Mac为例,客户端机器上双击cer文件,证书会自动导入到“系统根证书“和“登录”钥匙串中
- 注意把“信任”级别从“使用系统默认”调整为“始终信任”
这样客户端机器上chrome浏览器也能访问我们自定义的https网站并且不会提示“不安全”了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 石头记!