下面给你一个在 Linux 下使用 OpenSSL 生成 CA(Certificate Authority,证书颁发机构) 的完整示例,适合本地测试或内网使用。
mkdir -p ~/myca/{certs,crl,newcerts,private}
cd ~/myca
touch index.txt
echo 1000 > serial
说明:
private/:存放 CA 私钥(一定要保密)certs/:存放证书newcerts/:OpenSSL 自动生成的证书副本index.txt:证书数据库serial:证书序列号openssl genrsa -out private/ca.key 4096
权限保护(强烈建议):
chmod 400 private/ca.key
openssl req -x509 -new -nodes \
-key private/ca.key \
-sha256 \
-days 3650 \
-out ca.crt
会提示输入:
My Root CA)生成后:
ca.crt:CA 根证书(可公开)ca.key:CA 私钥(绝不可泄露)openssl x509 -in ca.crt -text -noout
你应该能看到:
Issuer: CN = My Root CA
Subject: CN = My Root CA
创建 openssl.cnf:
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = .
certs = $dir/certs
crl_dir = $dir/crl
new_certs_dir = $dir/newcerts
database = $dir/index.txt
serial = $dir/serial
private_key = $dir/private/ca.key
certificate = $dir/ca.crt
default_days = 3650
default_md = sha256
policy = policy_loose
[ policy_loose ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
生成 CA:
openssl req -new -x509 \
-key private/ca.key \
-out ca.crt \
-days 3650 \
-config openssl.cnf
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
⚠️ Common Name 填写域名,如 example.com
openssl x509 -req \
-in server.csr \
-CA ca.crt \
-CAkey private/ca.key \
-CAcreateserial \
-out server.crt \
-days 825 \
-sha256
ca.key如果你需要:
可以直接告诉我你的使用场景,我可以给你定制命令。