当前位置: 首页 > news >正文

使用 mkcert 工具自签发 https 证书并进行本地受信

介绍

mkcert 是一个用于创建本地受信任的 SSL/TLS 证书的简单工具,特别适合开发者在本地环境中使用。它解决了为开发和测试目的创建自签名证书时遇到的信任问题。以下是关于 mkcert 的详细介绍:

特点

  • 易用性:只需一条命令即可生成证书,并自动安装到系统的根证书存储中。
  • 跨平台支持:支持Windows、macOS和Linux等操作系统。
  • 多域名支持:可以为多个域名(包括通配符域名)创建证书。
  • 自动管理:能够自动处理证书的安装和移除,简化了证书管理流程。

官方地址:https://github.com/FiloSottile/mkcert

使用

如下一张图就把使用 mkcert 创建和使用证书讲清楚了:

在这里插入图片描述

注意:必须要使用管理员模式操作,否则执行命令时会出现相关目录不可以操作等权限问题。

分发根证书

将根证书分发给其他用户,手工导入操作系统后,目标用户通过浏览器访问 mkcert 基于同一个根证书签发的所有证书,就不再会有浏览器红色警告了。

分发扩展名处理:

rootCA.pem 拷贝一个副本,并命名为 rootCA.crt (因为 windows 并不识别pem扩展名,并且 Ubuntu 也不会将pem扩展名作为 CA 证书文件对待),将rootCA.crt文件分发给其他用户,手工导入。

如果根证书已经分发给很多用户(比如公司内部所有同事),请妥善保管根证书,否则以后重新生成根证书再签发的证书又是不可信了(信任的前提是基于同一个根证书签发的所有证书)。


上文是 Windows 下的操作,如果你是 Linux 和 MacOS,详见官网操作步骤。

如果你希望自定义 OrganizationOrganizationalUnitCommonName,请通过修改源代码 cert.go 文件并重新编译程序实现。
rootCA 默认有效期10年,后续签发的证书默认有效期2年3个月。如果需要修改时长,也是修改 cert.go 文件后重新编译。


原理

整体原理图如下,仅供参考:

在这里插入图片描述

根证书安装后,可以通过证书管理界面看到我们的证书,如下图所示:

在这里插入图片描述

在 Linux 上安装根证书

Linux 系统如果要正常访问自签发 https 证书不警告,同理需要安装根证书(不是创建证书)。

根据操作系统的不同,将转换后的证书放到不同的证书目录,然后执行对应的更新命令,如下:

Centos:

cp ca.crt /etc/pki/ca-trust/source/anchors;update-ca-trust

Ubuntu:

sudo cp ca.crt /usr/local/share/ca-certificates;sudo update-ca-certificates

Alpine:

cp ca.crt /usr/local/share/ca-certificates;sudo update-ca-certificates

如果证书应用在 docker 镜像私服的域名上,你需要将该证书添加到 docker 对应的 ca 目录中,方能正常使用 docker pull 命令拉取镜像,否则可能会出现错误 x509: certificate signed by unknown authority

docker 操作如下:

# 使用对应域名为目录创建文件夹
mkdir -p /etc/docker/certs.d/harbor.shanhy.com
# 拷贝CA证书到目录中
cp rootCA.crt /etc/docker/certs.d/harbor.shanhy.com/
# 重启docker服务
systemctl restart docker

(END)


http://www.mrgr.cn/news/79990.html

相关文章:

  • es 3期 第15节-词项查询与跨度查询实战运用
  • chattts生成的音频与字幕修改完善,每段字幕对应不同颜色的视频,准备下一步插入视频。
  • ArcGIS MultiPatch数据转换Obj数据
  • 优秀前端文章笔记----持续更新(20241211-至今)
  • YashanDB 23.2 YAC 共享集群部署和使用自带YMP迁移工具进行数据迁移,效果很city
  • 麒麟系统+达梦数据库+MybatisPlus+Redis+SpringBoot
  • 使用Windbg排查C++软件安装包安装时被安全软件拦截导致安装堵塞(线程卡住)的问题
  • 360极速浏览器不支持看PDF
  • MinerU:PDF文档提取工具
  • 在CentOS中安装和卸载mysql
  • centos部署SkyWalking以及在springcloud项目中搭配loki使用
  • 【优选算法 模拟】模拟算法入门详解 : 模拟算法小专题
  • Gitlab ci/cd
  • Maven插件打包发布远程Docker镜像
  • strace,tcmalloc,asan使用
  • jmeter CLI Mode 传参实现动态设置用户数
  • 腾讯微信Android面试题及参考答案(多张原理图)
  • soul Java开发面试题及参考答案
  • 110.【C语言】数据结构之判断是否为完全二叉树
  • erlang 基于jose 实现 aes 加解密