前言

有些场景我们可能会使用到SSL证书自签名--比如我想使用一个很简短的域名在内网环境下使用,然而我又不是该域名的持有者。当然了,省钱才是自签证书的初衷!!!

Windows 10

1、将CA公钥文件保存在您的计算机上,通常为.pem、.crt或.cer格式的文件。

2、打开“控制面板”,然后选择“网络和 Internet”。

3、在“网络和 Internet”中,选择“Internet 选项”。

4、在“Internet 选项”窗口中,切换到“内容”选项卡,然后单击“证书”按钮。

5、 在“证书”窗口中,切换到“受信任的根证书颁发机构”选项卡,然后单击“导入”。

6、 在“证书导入向导”中,单击“下一步”,然后浏览到您保存的CA公钥文件并选择它,然后再次单击“下一步”。

7、在“受信任的根证书颁发机构”窗口中,选择“将证书存储在以下存储”中的“受信任的根证书颁发机构”,然后单击“下一步”。

8、 单击“完成”来导入CA公钥。

完成上述步骤后,系统将成功导入CA公钥。

git

部分Git CA与操作系统中的CA并不能通用,如windows平台的git bash,所以还是需要额外处理。

正常若使用自签证书会报以下错误:

Administrator@instance-ki7s636g MINGW32 ~
$ git clone https://xx.xx.com/dev/zhang3.git
Cloning into 'zhang3'...
fatal: unable to access 'https://xx.xx.com/dev/zhang3.git/': SSL certificate problem: unable to get local issuer certificate

方案1: 声明git CA[建议]

1、假设已经将CA证书放置操作系统中的 C盘分区的certs目录下面:

$  stat /c/certs/ca.crt
  File: /c/certs/ca.crt
  Size: 1489            Blocks: 4          IO Block: 65536  regular file
Device: 1e80f371h/511767409d    Inode: 5629499534243284  Links: 1
Access: (0644/-rw-r--r--)  Uid: (197108/Administrator)   Gid: (197121/ UNKNOWN)
Access: 2024-03-08 19:59:49.740221700 +0800
Modify: 2024-03-08 19:59:49.740221700 +0800
Change: 2024-03-08 20:04:22.153981800 +0800
 Birth: 2024-03-08 19:59:49.660222600 +0800

2、声明git程序CA证书位置

$ git config --global http.sslCAinfo /c/certs/ca.crt

方案2: 跳过证书合法校验

告诉git,不需要对证书的来源进行检验

$ git config --global http.sslVerify false
该方法吐血不建议。

Msys2

# cat > /etc/pki/ca-trust/source/anchors/vqiu-ca.pem<<
证书内容
EOF

# update-ca-trust

RHEL/CentOS

# cat > /etc/pki/ca-trust/source/anchors/vqiu-ca.pem<<EOF
证书内容
EOF

刷新生效

# update-ca-trust

Debian/Ubuntu

为了条目清晰--后续可以轻松地跟踪,创建一个对应的CA子目录

# mkdir /usr/local/share/ca-certificates/vqiu-ca

将证书复制对CA子目录

# cp gitee-ca.pem /usr/local/share/ca-certificates/vqiu-ca/ca.crt

执行update-ca-certificates,将看到以下输出

# update-ca-certificates --fresh
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

若需要删除添加的CA证书,删除你自定义的根 CA 证书文件后,执行如下命令:

sudo update-ca-certificates --fresh

Alpine

Dockerfile写法

FROM alpine:latest
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
COPY ./ca.pem /usr/local/share/ca-certificates/gitee-CA.crt
RUN update-ca-certificates --fresh