windows下openssl的安装和生成证书,后续有机会再添加完善

方文锋  2022-03-22 14:25:54  1790  首页学习

我使用的操作系统是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



后续有时间再整理更新