openssl 自签证书 ¶
自签证书
注:自签证书和证书链可用一个叫做 minica 的小工具来快速构建,该工具由go编写,需要自己克隆和构建,不过不算复杂。以下是openssl的方法,用于帮助我们了解证书的各项要素。测试的Openssl版本为3.0.17,SAN功能要求高于1.1.1
自签根证或者特殊用途的证书X509
openssl req -x509 -newkey rsa:2048 -nodes -days 3650 \
-keyout star.ovwx.org.key \
-out star.ovwx.org.crt \
-subj "/C=US/O=AuthK Company Ltd./OU=IT Department/CN=*.ovwx.org" \
-addext "subjectAltName=DNS:*.ovwx.org,DNS:ovwx.org"
注意
--------—•
- 不是所有系统都支持 -addext 选项,测试的系统安装的 openssl 版本为 3.0.17,一般要求Openssl 版本高于1.1.1
- 如果需要对key加密,去掉 -nodes 参数即可
- 该证书可以用于根证书,也就是给CSR签发证书,用于根证书就不用加SAN了,也就是不必用 addext 参数
- C/ST/O/OU/CN 等属性不支持小写
查看指纹 SSL PIN
openssl x509 -noout -fingerprint -sha256 -in star.ovwx.org.crt
然后将指纹填入到需要绑定的应用中
生成证书请求
openssl req -new -nodes \
-keyout client1.key \
-out client1.csr -subj '/CN=cli' \
-addext 'subjectAltName=DNS:*.abc.com,DNS:abc.com,IP:1.2.3.4,IP:2.3.4.5'
使用根证和密钥签署证书
openssl x509 -req \
-copy_extensions copyall \
-in server.csr -out server.crt \
-CA ca/root.crt \
-CAkey ca/root.key \
-CAcreateserial
注:1.1.1K 及以下版本,不支持 -copy_extension 参数,要额外添加: -ext ‘subjectAltNames=IP:1.2.3.4,IP:2.3.4.5’
Openssl 处理模块
Openssl 各模块层次结构,一般是 openssl submodule 来调用子模块,比如使用 openssl rea 调用证书请求模块,openssl x509 来调用证书处理模块,而模块参数用 -args 来提供
---------—---•
- x509 证书模块
- -req 在X509模块中使用此参数处理证书请求,后面接 -copy_extensions copy_all 之类的参数导入证书 SAN
- -CA root.crt
- -CAkey root.key
- -CAcreateserial
- 这三个是做证书签发要求的参数
- req 证书请求 CSR
- -x509 使用证书请求模块直接生成证书
- -new 是生成证书请求
- ca 模块,处理根证书问题,用的似乎比较少,生成自签证书,和用自签证书签署CSR都可用X509模块和REQ模块来完成。有些特别的需求可能会用到CA模块
- pkcs12 模块,处理P12/PFX证书,将PEM/X509证书处理为二进制的公钥和私钥一体的证书
另:keytool,用于将P12文件转化为JKS证书文件,专用于JAVA应用程序
总结: x509 模块中处理证书,REQ模块处理CSR,如果CSR和证书一起处理,采用REQ模块
评论
请登录后发表评论。
暂无评论。成为第一个评论者!