天天记事 494 / 2021-10-13 09:39:37
声明:此法仅适合局域网自签发证书测试使用,任何使用此法制作的数字证书所造成的一切损失和危害,均由使用者承担,本站概不负责。
注意:本脚本仅适用于MacOS和Linux相关操作系统,Windows操作系统请修改相应系统命令。
1. 首先准备工具:openssl和keytool
一般情况,linux系统都自带了openssl,如果没有请自行安装;keytool是jdk的一个命令工具,通过安装jdk(版本号,自行查阅)就可得到该工具。
2. 创建工作目录,找到openssl的配置文件openssl.cnf并复制出来放到工作目录中(由于openssl.cnf文件有点大,这里就贴出来了),不同操作系统安装的位置不同,请自行查找(MacOS在/System/Library/OpenSSL/openssl.cnf)
3. 目录中执行下面脚本(先修改必要的参数<值域>,可合成在一个脚本文件中,再执行)
#准备工作
rm -rf build
mkdir build
#清理历史遗留文件
rm -rf rootca.cer
rm -rf server.cer
rm -rf server.jks
#创建根证书私钥
openssl genrsa -out build/rootca.key 2048
#创建CA根证书申请
openssl req -utf8 -new -key build/rootca.key -out build/rootca.csr -subj "/emailAddress=<公布的电子邮件>/C=CN/O=<组织结构>/CN=<组织机构标志>"
#生成CA根证书
openssl x509 -req -days 3650 -sha256 -extfile openssl.cnf -extensions v3_ca -signkey build/rootca.key -in build/rootca.csr -out rootca.cer
#######################################################
#创建服务器CA私钥
openssl genrsa -out build/server.key 2048
#创建服务器CA根证书申请
openssl req -utf8 -new -key build/server.key -out build/server.csr -subj "/C=CN/O=<组织机构>/CN=<组织机构标志,如果是颁发给网站,这里需要用域名>"
#用根证书签发server端证书
openssl x509 -req -days 365 -sha256 -extfile openssl.cnf -extensions v3_req -CA rootca.cer -CAkey build/rootca.key -CAserial build/rootca.srl -CAcreateserial -in build/server.csr -out server.cer
#合并证书server.cer和rootca.cer,注意,server.cer在前,rootca.cer在后
cat server.cer rootca.cer > server-pub.cer
#转换为pkcs12格式(需要输入两次密码)
openssl pkcs12 -export -clcerts -in server-pub.cer -inkey build/server.key -out build/server.p12
rm -rf server-pub.cer
#转换为jks格式(需要用到JDK的keytool工具,需要输入三次密码)
keytool -importkeystore -srckeystore build/server.p12 -destkeystore server.jks -srcstoretype pkcs12 -deststoretype jks
4. 执行上面脚本后,得到的server.jks就可以用到java环境了,如:HUWS、Tomcat、WebLogic
5. 特别提醒,默认情况下,openssl命令使用的默认参数值存在于openssl.cnf中,如果需要做调整,先要修改它,比如:v3_ca、v3_req、-req、-new这些,在配置文件中找到结点(以[ v3_ca ]这样格式存在)配置即可。
6. 另外,不要怕出错,执行过程可能会遇到各种的异常情况,一定要找到出错原因,再做调整,不能瞎改配置文件(修改之前最好先做好备份,出致命问题了至少可以回到初始状态)。
7. 目录结构(构建后)
证书文件补充说明:
所有的公钥和私钥同证书都会被存储在密钥库中。因为证书需要被签名,签名必须使用非对称加密算法+hash算法,所以一般是 MD5WithRSA 或者 SHA1WithRSA。
证书文件格式说明:
上一篇:UMSP添加根证书方法
下一篇:MacOS摄像头媒体采集