我使用的操作系统是Windows10。
	 
 
	
openssl 下载地址: https://mirror.firedaemon.com/OpenSSL/openssl-3.0.2.zip
下载的网站是: https://kb.firedaemon.com/support/solutions/articles/4000121705
	 
 
安装包解压后的目录结构:
	 
 
然后设置环境变量:
path变量设置的是用户的,如图是admin用户的,不是设置系统的path变量
	 
 
	 
 
设置的这个路径: C:\RJAZ\openssl-3\x64\bin\ ,该路径下的文件结构:
	 
 
	
然后在系统变量里添加两个变量,OPENSSL_HOME 和 OPENSSL_CONF
OPENSSL_HOME 变量的值设置为: C:\RJAZ\openssl-3\x64\bin
	 
 
OPENSSL_CONF 变量的值设置为: C:\RJAZ\openssl-3\ssl\openssl.cnf
	
	 
 
C:\RJAZ\openssl-3\ssl\openssl.cnf ,这个配置文件需要用到
	 
 
openssl.cnf这个配置文件内容部分截图:
	 
 
	
	 
 
	 
 
serial 文件不存在时出现错误:
	D:/openssl/demoCA/serial: Permission denied
38270000:error:80000005:system library:BIO_new_file:Input/output error:..\crypto\bio\bss_file.c:67:calling fopen(D:/openssl/demoCA/serial, r)
38270000:error:10080002:BIO routines:BIO_new_file:system lib:..\crypto\bio\bss_file.c:77:
error while loading serial number 
	 
 
serial 存在但是这个文件内容为空的话会出现错误:
	Using configuration from C:\RJAZ\openssl-3\ssl\openssl.cnf
Unable to load number from D:/openssl/demoCA/serial
48250000:error:06800096:asn1 encoding routines:a2i_ASN1_INTEGER:short line:..\crypto\asn1\f_int.c:139:
error while loading serial number 
	 
 
	
接下来输入指令生成证书,我从网上收集了测试指令,参考链接( https://its401.com/article/qq_28938933/88832306 )
★★签发命令
(1)生成自己的根证书
	##生成根CA密钥
openssl genrsa -out ca.key 2048
##生成CA根证书
openssl req -new -x509 -days 7304 -key ca.key -out ca.crt -subj "/C=CN/ST=shandong/L=jinan/O=My SSL G1/OU=IT Dept/CN=My SSL G1 Server" 
(2)生成服务器证书密钥及证书签发
	##生成SSL证书私钥:
openssl genrsa -out server_domain.pem 2048
##制作SSL证书私钥
openssl rsa -in server_domain.pem -out server_domain.key
##生成SSL证书请求
openssl req -new -key server_domain.pem -out server_domain.csr -subj "/C=CN/ST=shandong/L=jinan/O=my domain test/OU=IT Dept/CN=my domain"
##根CA进行SSL证书签发
openssl ca -policy policy_anything -days 3652 -cert ca.crt -keyfile ca.key -in server_domain.csr -out server_domain.crt 
	
	 
 
ok,完成了。
	 
 
	
	
2022-03-24 更新,让谷歌浏览器不报警“不安全”
我继续在网上收集了一些资料,整理一下,我写了个bat文件脚本如图:
	 
 
	
生成ca根证书.bat ,内容如下:
	@echo off
::生成ca秘钥,得到ca.key
openssl genrsa -out ca.key 4096
pause
::生成ca证书签发请求,得到ca.csr
openssl req -new -sha256 -out ca.csr -key ca.key -config ca.conf
pause
::生成ca根证书,得到ca.crt
openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt
pause
如图:
	 
 
执行脚本之前,先配置 ca.conf 这个文件,这个文件内容为:
	[ req ]
default_bits       = 4096
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName                 = Country Name (2 letter code)
countryName_default         = CN
stateOrProvinceName         = State or Province Name (full name)
stateOrProvinceName_default = HaiNan
localityName                = Locality Name (eg, city)
localityName_default        = HaiKou
organizationName            = Organization Name (eg, company)
organizationName_default    = Fang
commonName                  = Common Name (e.g. server FQDN or YOUR name)
commonName_max              = 64
commonName_default          = Fang Root SSL 
	
	 
 
配置好后执行脚本,一路回车就行了,配置文件可以根据自己的需求更改。
接下来是 生成终端用户证书.bat 这个脚本文件内容:
	@echo off
::生成秘钥,得到server.key
openssl genrsa -out server.key 2048
pause
::生成证书签发请求,得到server.csr
openssl req -new -sha256 -out server.csr -key server.key -config server.conf
pause
::用CA证书生成终端用户证书,得到server.crt
openssl x509 -req -days 732 -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt -extensions req_ext -extfile server.conf 
pause 
	
	 
 
配置文件 server.conf 的内容为:
	[ req ]
default_bits       = 2048
distinguished_name = req_distinguished_name
req_extensions     = req_ext
[ req_distinguished_name ]
countryName                 = Country Name (2 letter code)
countryName_default         = CN
stateOrProvinceName         = State or Province Name (full name)
stateOrProvinceName_default = HaiNan
localityName                = Locality Name (eg, city)
localityName_default        = HaiKou
organizationName            = Organization Name (eg, company)
organizationName_default    = Fang
commonName                  = Common Name (e.g. server FQDN or YOUR name)
commonName_max              = 64
commonName_default          = *.test2022.cn
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1   = xx1.test2022.cn
DNS.2   = xx2.test2022.cn
DNS.3   = xx3.test2022.cn
DNS.4   = xx4.test2022.cn
IP.1      = 192.168.1.51
IP.2      = 192.168.1.101 
	
	 
 
配置好后执行脚本,一路回车就可以了。
	
需要右键ca.crt安装,安装到“受信任的根证书颁发机构”(不然server.crt还是不受信任的)
参考的链接:
https://www.cnblogs.com/nidey/p/9041960.html
https://www.cnblogs.com/will-space/p/11913744.html
	
	
	后续有时间再整理更新 。
。