openssl证书管理ubuntu怎么做
导读:Ubuntu 上使用 OpenSSL 进行证书管理的实操指南 一 安装与准备 安装 OpenSSL 并检查版本: 命令:sudo apt update && sudo apt install -y openssl 验证:...
Ubuntu 上使用 OpenSSL 进行证书管理的实操指南
一 安装与准备
- 安装 OpenSSL 并检查版本:
- 命令:
sudo apt update & & sudo apt install -y openssl - 验证:
openssl version -a
- 命令:
- 准备目录与 CA 索引(用于自建 CA 时):
- 建议目录:
/usr/lib/ssl/CA(或自建如:/home/ubuntu/pki/demoCA) - 初始化:
mkdir -p CA/{ certs,crl,newcerts,private}touch CA/index.txtecho 01 > CA/serial
- 建议目录:
- 配置要点(编辑
/usr/lib/ssl/openssl.cnf的[ CA_default ]段):dir = /usr/lib/ssl/CAcopy_extensions = copy(便于把 CSR 中的扩展如 subjectAltName 复制到证书)- 按需设置
default_days、crlDistributionPoints等。
二 自建根 CA 与签发证书
- 生成根 CA 私钥与自签名根证书:
- 私钥:
openssl genrsa -out CA/private/cakey.pem 2048 - 自签名根证书:
openssl req -new -x509 -key CA/private/cakey.pem -out CA/cacert.pem -utf8 -days 3650 -subj "/C=CN/ST=省份/L=城市/O=组织/OU=部门/CN=Your-Root-CA"
- 私钥:
- 生成服务器证书(示例):
- 服务器私钥:
openssl genrsa -out server.key 2048 - 生成 CSR(使用配置文件以加入 SAN):
- 新建
csr.conf:[ req ] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext distinguished_name = dn [ dn ] C = CN ST = 省份 L = 城市 O = 组织 OU = 部门 CN = your.domain.com [ req_ext ] subjectAltName = @alt_names [ alt_names ] DNS.1 = your.domain.com DNS.2 = *.your.domain.com IP.1 = 192.168.1.10 - 生成 CSR:
openssl req -new -key server.key -out server.csr -config csr.conf
- 新建
- 用根 CA 签发服务器证书(使用扩展配置):
- 新建
cert.conf:authorityKeyIdentifier = keyid,issuer basicConstraints = CA:FALSE keyUsage = digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment subjectAltName = @alt_names [ alt_names ] DNS.1 = your.domain.com DNS.2 = *.your.domain.com IP.1 = 192.168.1.10 - 签发:
openssl x509 -req -in server.csr -CA CA/cacert.pem -CAkey CA/private/cakey.pem -CAcreateserial -out server.crt -days 365 -sha256 -extfile cert.conf
- 新建
- 服务器私钥:
- 快速方式(不使用配置文件,仅用于测试):
- 自签名服务器证书:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt。
- 自签名服务器证书:
三 常用操作与验证
- 查看证书信息:
openssl x509 -in server.crt -text -noout - 验证证书(使用 CA 证书链):
openssl verify -CAfile CA/cacert.pem server.crt - 转换格式:
- PEM 转 DER:
openssl x509 -outform der -in server.crt -out server.der - 导出 PKCS#12(含私钥,供 Windows/IIS 等):
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt
- PEM 转 DER:
- 生成客户端证书(与服务器类似):
- 私钥:
openssl genrsa -out client.key 2048 - CSR:
openssl req -new -key client.key -out client.csr - 签发:
openssl ca -in client.csr -cert CA/cacert.pem -keyfile CA/private/cakey.pem -out client.crt -days 365。
- 私钥:
四 吊销与 CRL 管理
- 吊销证书(按序列号或证书文件):
- 按文件:
openssl ca -revoke /path/to/cert.pem - 按序列号(先查询):
openssl x509 -in cert.pem -noout -serial -subject
- 按文件:
- 初始化 CRL 编号(首次):
echo 01 > CA/crlnumber - 生成/更新 CRL:
openssl ca -gencrl -out CA/crl/crl.pem -crldays 7
- 查看 CRL:
openssl crl -in CA/crl/crl.pem -noout -text - 分发:将 CRL 通过 HTTP 对外提供(在
openssl.cnf的crlDistributionPoints中配置 URL)。
五 在 Nginx 或 Apache 中使用证书
- Nginx 示例:
- 配置片段:
server { listen 443 ssl; server_name your.domain.com; ssl_certificate /path/to/server.crt; ssl_certificate_key /path/to/server.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; } - 启用与重启:
- 测试:
sudo nginx -t - 重启:
sudo systemctl restart nginx
- 测试:
- 配置片段:
- Apache 示例:
- 启用模块:
sudo a2enmod ssl - 配置
SSLCertificateFile /path/to/server.crt与SSLCertificateKeyFile /path/to/server.key - 启用站点并重启:
sudo a2ensite default-ssl & & sudo systemctl restart apache2。
- 启用模块:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: openssl证书管理ubuntu怎么做
本文地址: https://pptw.com/jishu/750856.html
