侧边栏壁纸
  • 累计撰写 269 篇文章
  • 累计创建 141 个标签
  • 累计收到 16 条评论

目 录CONTENT

文章目录

使用openssl自签本地根证书

Sherlock
2021-04-23 / 0 评论 / 0 点赞 / 2 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

局域网自签 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
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区