1. mkcert简介
域名证书的签发,有两种方式:一种是权威机构签发,一种是自己签发。
mkcert是一个开源工具,可以帮助我们轻松创建本地开发所需的域名证书,以便进行开发和调试。
使用mkcert时,自动生成一个本地CA,并使用这个CA来签发证书。
相关资料:
- 《浅谈数据加密》
- 安装及使用mkcert在Linux和macOS中创建本地受信任的SSL证书
- github - FiloSottile/mkcert
- 基于OpenSSL自建CA和颁发SSL证书
- 使用 OpenSSL 自建 CA 并签发证书
2. 安装mkcert
1、安装nss-tools
1 | yum install nss-tools |
nss-tools 是 mkcert 的依赖工具。
nss-tools 中的 nss 是 Network Security Services 的缩写,它是一组开源软件库,用于支持跨网络的安全和身份验证服务,如安全套接字层(SSL)、传输层安全(TLS)以及其他安全和密钥管理协议。这个工具包可以支持创建、发送和管理网络协议的加密密钥和证书。
2、安装mkcert
1 | wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.3.0/mkcert-v1.3.0-linux-amd64 |
3. 使用mkcert自建CA并颁发域名证书
本节中,我们会自建CA,并签发 gitlab.voidking.com
域名的域名证书。
1、修改主机名(可选)
1 | echo localca > /etc/hostname && hostanme localca |
主机名决定了生成的CA中的subject和issuer的信息,建议改成localca
这种可读性更强的主机名,生成CA证书后可以改回。
2、安装本地CA(生成CA)
1 | mkcert -install |
输出:
1 | Using the local CA at "/root/.local/share/mkcert" ✨ |
3、查看CA证书
1 | mkcert -CAROOT # 获取CA根目录 |
4、生成证书(签发证书)
1 | mkcert gitlab.voidking.com localhost 127.0.0.1 |
输出:
1 | Using the local CA at "/root/.local/share/mkcert" ✨ |
5、查看证书
1 | openssl x509 -in gitlab.voidking.com+2.pem -text -noout |
4. 配置域名证书信任
设备上默认只信任权威机构签发的域名证书,而自签发的域名证书是不被信任的。
想要使设备信任自签发的域名证书,需要把用于签发域名证书的CA证书添加为信任机构。
1、下载rootCA.pem
从/root/.local/share/mkcert
目录中下载 rootCA.pem 到本地。
2、添加CA信任
(1)Chrome添加信任
设置,高级设置,管理证书,导入,选择rootCA.pem,证书存储选择受信任的根证书颁发机构,完成,出现警告点确定。重启Chrome。
(2)Firefox添加证书信任
选项,隐私与安全,证书,查看证书,导入,选择rootCA.pem。重启Firefox。
(3)Linux中添加证书信任
拷贝 rootCA.pem 到 /etc/pki/ca-trust/source/anchors/
目录,然后执行 update-ca-trust
5. 使用openssl生成DHPARAM证书
DHPARAM证书是一种用于Diffie-Hellman密钥交换过程的证书。Diffie-Hellman协议是一个密钥交换协议,主要用于在安全通信中产生共享密钥,这个密钥可以用来加密后续的通信过程。使用DHPARAM证书既能够提高通信的安全性,又能够防止潜在的安全威胁。
gitlab 是一个Diffie-Hellman密钥交换的应用,因此需要 DHPARAM证书,这里我们生成一个。
1、使用OpenSSL生成DHPARAM证书pem文件
1 | openssl dhparam -out dhparams.pem 2048 |
2、将证书文件的权限更改为600
1 | chmod 600 dhparams.pem |