如何在局域网开发环境快乐的使用https证书

197 阅读2分钟

背景

部署一套新的开发环境,未提供准确的域名和证书,开发环境的域名是开发之间各自约定的,无需购买真实的域名。

遇到的问题

在部署完毕后,发现服务之间的调用需要使用到https证书,而申请证书需要小钱钱的,并且域名也不是真实域名,无法直接在云上购买证书。

mkcert

  • 思考

现在需要的只是一个https证书,没办法在局域网内实现吗?

  • 方案选择

在查阅资料后,发现mkcert和openssl可以实现我的诉求,对比了一下mkcert和openssl,发现openssl的操作太复杂了ヾ( ̄▽ ̄)ByeBye。还是mkcert操作方便,哈哈,怎么简单怎么来。

安装

使用

生成证书

  • 生成CA证书
mkcert -install

生成后在/root/.local/share/mkcert目录下产生两个文件(rootCA-key.pem,rootCA.pem), rootCA.pem就是后续需要给到对应客户端信任的证书

  • 生成指定域名证书
# 指定域名生成证书
mkcert -key-file key.pem -cert-file cert.pem xxx.xxx.com *.xxx.xxx.com
# 如果需要跨IP访问,需要生成一个pkcs12证书
mkcert -pkcs12 10.20.180.86

使用证书

将对应域名的key.pem和cert.pem放到指定网关的指定即可,这个看个人情况自己查资料处理哈。

信任证书

  • Windows信任证书
  1. 将cert.pem修改为cert.crt拷贝到Windows系统中,同时将10.20.180.86.p12证书也拷贝下来,双击安装证书即可。
  2. 记得放到受信任的证书目录下 image.png

测试

  • 本地访问: 企业微信截图_20240722182431.png
  • PHP服务端访问
  1. curl.haxx.se/ca/cacert.p…下载cacert.pem文件
  2. 将rootCA.pem的内容填充到cacert.pem最后
  3. 修改php.ini
curl.cainfo = "/webser/www/ssl/cacert.pem"
openssl.cafile = "/webser/www/ssl/cacert.pem"

打完收工