自签证书

生成证书

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  # 指定信任的ca证书列表