OpenSSL 命令
1. 工具定位
Section titled “1. 工具定位”OpenSSL 是一个稳健、功能齐全的开源加密库和工具包,实现了 SSL 及 TLS 协议,并提供了包括数据摘要、对称/非对称加密及完整的 X.509 数字证书管理能力。
2. 数据摘要与密码散列
Section titled “2. 数据摘要与密码散列”通常用于校验文件完整性或生成单向密码哈希。
# 生成文件的 MD5 摘要openssl dgst -md5 target_file.txt
# 生成字符串摘要 (注意 echo 必须加 -n 防止换行符污染哈希结果)echo -n "admin123" | openssl md5
# 使用特定盐值生成系统密码openssl passwd -1 -in password_file.txt -salt myRandomSalt3. 非对称加密:RSA 密钥对生成
Section titled “3. 非对称加密:RSA 密钥对生成”# 生成 2048 位的 RSA 强私钥openssl genrsa -out rsa_private.key 2048
# 从私钥中提取分离出对应的公钥openssl rsa -in rsa_private.key -pubout -out rsa_public.key4. 证书探查与系统信任注入
Section titled “4. 证书探查与系统信任注入”探查现有证书细节:
# 检查证书有效期openssl x509 -enddate -noout -in /path/to/server.crt# 查看证书完整载荷与颁发信息openssl x509 -text -noout -in /path/to/server.crt将内网证书注入 Linux 系统根信任区 (以 Ubuntu 为例):
sudo cp ca.crt /usr/local/share/ca-certificates/my_internal_ca.crtsudo update-ca-certificates5. 实战:生成包含 SAN 的自制 SSL 证书
Section titled “5. 实战:生成包含 SAN 的自制 SSL 证书”在现代浏览器(如 Chrome)中,传统的单一 CN(公用名)已被弃用,必须在证书的 SAN (Subject Alternative Name) 扩展中声明所有关联的域名,否则会被拦截拦截为“不安全”。
5.1. Step A: 建立自签的根 CA (Certificate Authority)
Section titled “5.1. Step A: 建立自签的根 CA (Certificate Authority)”# 1. 生成 CA 自己的私钥openssl genrsa -out ca.key 2048
# 2. 生成长效期 (100 年) 的根证书 (CRT)openssl req -sha256 -new -x509 -days 36500 -key ca.key -out ca.crt \ -subj "/C=CN/ST=GD/L=SZ/O=MyCompany/OU=IT/CN=MyInternalRootCA"5.2. Step B: 颁发服务端业务证书
Section titled “5.2. Step B: 颁发服务端业务证书”# 1. 生成服务端私钥openssl genrsa -out server.key 2048
# 2. 生成证书签名请求 (CSR),同时在请求中挂载多域名 SAN 扩展openssl req -new -sha256 -key server.key -out server.csr \ -subj "/C=CN/ST=GD/L=SZ/O=MyCompany/OU=IT/CN=wsl.domain.com" \ -reqexts SAN -config <(cat /etc/pki/tls/openssl.cnf \ <(printf "\n[SAN]\nsubjectAltName=DNS:*.wsl.domain.com,DNS:wsl.domain.com"))
# 3. 使用自建的 CA 证书与私钥,正式签署业务证书openssl ca -in server.csr -days 36500 -md sha256 -keyfile ca.key -cert ca.crt \ -extensions SAN -config <(cat /etc/pki/tls/openssl.cnf \ <(printf "\n[SAN]\nsubjectAltName=DNS:*.wsl.domain.com,DNS:wsl.domain.com")) \ -out server.crt