生成证书
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| # ⽣成根证书私钥 openssl genrsa -out rootCA.key 2048
#可以将ca.key转为pem文件 #openssl rsa -in rootCA.key -out rootCA.pem #再查看一下ca-key.pem文件,内容和ca.key是相同的
# 生成根证书 openssl req -x509 -new -nodes -key rootCA.key -days 75000 -out rootCA.pem -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=qyapi.weixin.qq.com/CN=CA/emailAddress=admin@test.com" CN=commonName 注:生成证书时,CN要和服务器的域名相同,如果在本地测试,就使用localhost OU=organizationUnit O=organizationName L=localityName S=stateName C=country
# 查看证书 openssl x509 -in rootCA.pem -text -noout
# 可以将rootCA.pem转为.crt扩展名 openssl x509 -outform pem -in rootCA.pem -out rootCA.crt
# 生成服务端证书 openssl genrsa -out server.key 2048 # 生成服务端证书签名请求文件 openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=qyapi.weixin.qq.com/CN=CA/emailAddress=admin@test.com"
echo "subjectAltName=DNS:qyapi.weixin.qq.com,IP:0.0.0.0" > cert_extensions # 根据签发请求⽣成服务端证书 增加-extfile参数即可生成v3版本的证书: openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 75000 -extfile cert_extensions # 验证 openssl verify -CAfile rootCA.pem -verify_hostname qyapi.weixin.qq.com server.crt
|
https://blog.csdn.net/qq_29947615/article/details/127506022
https://blog.csdn.net/MX__LL/article/details/125295929
① V1版本
标准证书体格式的第一版包括了版本号、序列号、签名算法、有效性及主体信息。其中,版主用来定义证书的版本号,一般为整数形式;序列号对CA所发布的每个证书具有唯一性,属于大整数形式;签名算法用来标识CA签署证书的算法。有效性则定义了证书的有效期;主体用以表明证书的发布对象。
② V2版本
V2在V1的基础上添加了两个选项:发布者的惟一标识和主体的惟一标识。当多个证书发布者都使用相同的X.500名字,发布者的惟一标识可以将它们区分开来;而当两个主体有相同的X.500名字,主体惟一标识则可以将它们区分开来。由于这两项很少用到,因此第二版的证书也很少用到。
③ V3版本
X.509在第三版中添加了扩展的功能, 虽然复杂但是很重要。扩展在v3版证书中是一个可选项,但是可以提供如下内容:主体和发布者的属性、密钥的用法和策略以及证书路径约束。主体和发布者的属性,这一部分提供了主体以及发布者的附加属性。
添加自签名ca证书的信任
JDK
某些java框架可能不会验证证书
1 2 3 4
| keytool -import -noprompt -v -trustcacerts -alias <alias_name> -file <ca_file_path> -storepass <store_password> -keystore <JAVA_HOME>/lib/security/cacerts
示例: keytool -import -noprompt -v -trustcacerts -alias ca-cert -file /u01/certs/ca.crt -storepass changeit -keystore /u01/apps/java/amazon-corretto-17.0.5.8.1-linux-x64/lib/security/cacerts
|
python
1
| 运行时添加变量 REQUESTS_CA_BUNDLE=D:\Github\rootCA.crt
|