局域网自签 SSL 证书
当我们需要在企业内部或者测试环境中使用证书时,往往需要创建自签名证书。
主要有两种方式:
-
1.使用 mkcert 完成签名
简单、快捷,但是不可定义 CA 相关信息。可参考:https://github.com/FiloSottile/mkcert
-
2.使用 Linux 系统中的 Openssl 工具来生成自签名证书。
自签证书可以实现通信的加密,也可以基于自签名的 CA 证书模拟实际 CA 信任链的工作过程。
本文主要介绍使用 openssl 自签证书。
SSL 证书要求
- 至少使用 SHA-2 系列算法(例如,SHA256)签名
- 有效期不得超过 398 天(13个月)
自苹果公司宣布了 SSL 证书有效期不超过 398 天的底层程序要求以来,包括网络浏览器开发商在内的所有相关方都纷纷步入“直通 398 新规之旅”。
这一新政策自 2020 年 9 月 1 日起生效,限定证书的有效期最长不得超过398 天,远远短于此前的 825 天。为满足新政,TLS/SSL 证书的更新需更加频繁,这无疑对证书配置的自动化流程提出了更高要求。
将证书有效期缩短到 398 天,这是继微软主导谈判并决议淘汰 SHA-1,将整个生态系统转到SHA-2 哈希算法之后,CA/B 论坛所做的又一项重大改变。
而未来的签名算法必然是属于 ECDSA 的天下。
openssl 自签证书过程
直接上命令:
# 生成 CA 证书密钥
openssl genrsa -out ca.key 2048
# 签发 CA 证书
openssl req -new -x509 -nodes -days 3650 -key ca.key -out ca.crt -subj /C=CN/ST=Beijing/L=Beijing/O=sherlocky/OU=sherlocky/CN=sherlocky.com/emailAddress=ca@sherlocky.com
# 生成服务端证书密钥和证书请求文件
openssl req -newkey rsa:2048 -days 398 -nodes -keyout server.key -out server.csr -subj /C=CN/ST=Beijing/L=Beijing/O=sherlocky/OU=sherlocky/CN=sherlocky.com/emailAddress=ca@sherlocky.com
# 生成服务端证书(有效期398天)
openssl x509 -req -in server.csr -days 398 -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
如果是需要签发局域网 IP 的证书:
# 生成泛域名证书请求文件
openssl req -newkey rsa:2048 -days 398 -nodes -keyout server.pem -out server.csr -subj /C=CN/ST=Beijing/L=Beijing/O=thunisedu/OU=moedu/CN=*.minio.dev.com/emailAddress=moedu@thunisedu.com
## 需要 IP 支持必须配置 ext
cat << EOF > v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1 = 172.16.100.12
IP.2 = 192.168.1.12
DNS.1 = *.minio.dev.com
DNS.2 = minio.dev.com
EOF
# 颁发带 IP 支持的泛域名证书
openssl x509 -req -in server.csr -days 398 -CA ca.crt -CAkey ca.key -set_serial 100 -out server.crt -extfile v3.ext
至此,带 IP 支持的泛域名证书已自签完毕。
常见证书格式的转换:
# 转p12格式
openssl pkcs12 -chain -CAfile ca.crt -export -in example.crt -inkey example.key -out example.p12 -name example.com
# 转cer
## DER编码
openssl x509 -in ca.crt -out ca.cer -outform der
## Base64编码
openssl x509 -in ca.crt -out ca_base64.cer
证书的安装
-
1.Windows
直接安装到“受信任的根证书机构”下即可 -
2.Linux
cp ca.crt /etc/pki/ca-trust/source/anchors/custom_ca.crt
update-ca-trust
- 3.Java 中安装证书
cd $JAVA_HOME
#导入证书
./jre/bin/keytool -keystore jre/lib/security/cacerts -importcert -alias customca -file /tmp/ca.crt -storepass changeit
#查看证书
./jre/bin/keytool -list -keystore jre/lib/security/cacerts -storepass changeit | grep customca
#删除证书
./jre/bin/keytool -keystore jre/lib/security/cacerts -delete -alias customca
评论区