1、创建私有CA
创建CA目录结构
1 | sudo mkdir -p /etc/ca |
然后生成根证书:
1 | openssl req -new -x509 -days 3650 -key ca.key.pem -out ca.crt.pem |
依次回答问题,也可以使用subj参数直接创建:
1 | openssl req -new -x509 -days 3650 -key ca.key.pem -out canew.crt.pem \ |
2、创建服务器证书(以git.lan为例)
创建一个子目录保存服务器证书
1 | sudo mkdir servers |
生成服务器私钥
1 | sudo openssl genrsa -out /etc/ca/servers/git.lan.key.pem 2048 |
创建证书签名请求(CSR)
1 | openssl req -new -key /etc/ca/servers/git.lan.key.pem -out /etc/ca/servers/git.lan.csr.pem -subj "/C=CN/ST=Beijing/L=Beijing/O=JGS/OU=DEV/CN=git.lan" |
创建证书扩展文件(在/etc/ca/servers/中执行)
1 | sudo tee git.lan.ext > /dev/null <<EOF |
使用 CA 签发服务器证书
1 | sudo openssl x509 -req -in /etc/ca/servers/git.lan.csr.pem \ |
git.lan.crt.pem是服务器证书
git.lan.key.pem是私钥
证书验证:
1 | sudo openssl x509 -in git.lan.crt.pem -text -noout |
验证证书链
1 | sudo openssl verify -CAfile /etc/ca/ca.crt.pem git.lan.crt.pem |
上面两个用于服务器设置
例如,Nginx设置,将上述两个文件拷贝到相应目录/etc/nginx/ssl/
1 | server { |
Windows客户端:
双击ca.crt.pem,选择 “安装证书” → “当前用户” 或 “本地计算机”;
选择 “将所有证书放入下列存储” → “浏览” → 选择 “受信任的根证书颁发机构”;
Ubuntu:
1 | # 复制 CA 证书到系统信任目录 如果远程拷贝使用SCP |