windows使用openssl生成ca证书

一:双向认证–服务器配置

1、准备工作

1、 下载win64的Openssl,可到http://slproweb.com/products/Win32OpenSSL.html下载,这里下载1.0.1j版本。

这里我安装到D:\OpenSSL-Win64\目录下。

2、 下载Openssl源码,去官网http://www.openssl.org/下载即可。

解压openssl-1.0.1j.tar.gz,找到\openssl-1.0.1j\apps目录,拷贝demoCA目录和openssl.cnf文件到Openssl的安装目录下的bin目录下(即D:\OpenSSL-Win64\bin\)。

3、在D:\OpenSSL-Win64\bin目录下,创建ca、jks、server、client四个目录。

2、开始生成证书:

打开命令提示行(cmd.exe),—-如果是win7环境需要以管理员身份运行cmd.exe(一般在C:\Windows\System32下查找到cmd.exe右建以管理员身份运行),

并切换到Openssl安装目录的bin目录下。依次执行下述命令。

(一)生成CA证书

1.创建私钥:

D:\OpenSSL-Win64\bin>openssl genrsa -out ca/ca-key.pem 1024

2.创建证书请求:

D:\OpenSSL-Win64\bin>openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -config openssl.cnf

-----------------------------------------------------------------------------

Country Name (2 letter code) [AU]:CN    
State or Province Name (full name) [Some-State]:BJ    
Locality Name (eg, city) []:BJ    
Organization Name (eg, company) [Internet Widgits PtyLtd]:ple    
Organizational Unit Name (eg, section) []:live    
Common Name (eg, YOUR name) []:root    
Email Address []: 

Please enter the following 'extra' attributes    
to be sent with your certificate request    
A challenge password []:    
An optional company name []:

3.自签署证书:

D:\OpenSSL-Win64\bin>openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650

4.将证书导出成浏览器支持的.p12格式:

D:\OpenSSL-Win64\bin>openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12

密码:passca     

(二)生成server证书

1.创建私钥:

D:\OpenSSL-Win64\bin>openssl genrsa -out server/server-key.pem 1024

2.创建证书请求:

D:\OpenSSL-Win64\bin>openssl req -new -out server/server-req.csr -key server/server-key.pem -config openssl.cnf

-------------------------------------------------------------------------

Country Name (2 letter code) [AU]:CN    
State or Province Name (full name) [Some-State]:BJ    
Locality Name (eg, city) []:BJ    
Organization Name (eg, company) [Internet Widgits PtyLtd]:ple    
Organizational Unit Name (eg, section) []:live    
Common Name (eg, YOUR name) []:localhost   注释:一定要写服务器所在的ip地址或者域名//红色这里是本机测试,所以我写localhost    
Email Address []:     

Please enter the following 'extra' attributes    
to be sent with your certificate request    
A challenge password []:    
An optional company name []:

3.自签署证书:

D:\OpenSSL-Win64\bin>openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650

4.将证书导出成浏览器支持的.p12格式:

D:\OpenSSL-Win64\bin>openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12

密码:passca  

(三)生成client证书

1.创建私钥:

D:\OpenSSL-Win64\bin>openssl genrsa -out client/client-key.pem 1024

2.创建证书请求:

D:\OpenSSL-Win64\bin>openssl req -new -out client/client-req.csr -key client/client-key.pem -config openssl.cnf

----------------------------------------------------------------------------
Country Name (2 letter code) [AU]:CN    
State or Province Name (full name) [Some-State]:BJ    
Locality Name (eg, city) []:BJ    
Organization Name (eg, company) [Internet Widgits PtyLtd]:ple    
Organizational Unit Name (eg, section) []:live    
Common Name (eg, YOUR name) []:client    
Email Address []:     

Please enter the following 'extra' attributes    
to be sent with your certificate request    
A challenge password []:    
An optional company name []:

3.自签署证书:

D:\OpenSSL-Win64\bin>openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650

4.将证书导出成浏览器支持的.p12格式:

D:\OpenSSL-Win64\bin>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client_err.p12

密码:passca
  1. 生成客户端证书导出成浏览器支持的.p12格式(用于导入浏览器):

    D:\OpenSSL-Win64\bin>openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out client/client.p12

    密码:passca

(四)根据ca证书生成jks文件

D:\OpenSSL-Win64\bin>keytool -keystore C:/OpenSSL-Win64/bin/jks/truststore.jks -keypass 930204 -storepass 930204 -alias ca -import -trustcacerts -file C:/OpenSSL-Win64/bin/ca/ca-cert.pem


所有者: CN=WS, OU=WSS, O=WS, L=BJ, ST=BJ, C=CN
发布者: CN=WS, OU=WSS, O=WS, L=BJ, ST=BJ, C=CN
序列号: c021c031c406f32c
有效期开始日期: Wed Nov 16 14:25:48 CST 2016, 截止日期: Sat Nov 14 14:25:48 CST
2026
证书指纹:
     MD5: D1:66:B9:4C:7C:B6:21:01:50:25:45:59:DE:B5:01:33
     SHA1: 39:69:63:34:6A:4C:D1:CC:EF:4B:79:7B:64:AF:E1:9C:C8:C8:E3:12
     SHA256: B4:8B:17:C0:F8:08:13:A4:10:63:62:59:41:02:B7:F6:1A:98:19:69:F9:
            89:AD:75:89:78:DE:29:25:32:8E:C8
     签名算法名称: SHA256withRSA
     版本: 1

(五)配置tomcat ssl

修改conf/server.xml。配置如下。xml 代码

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="true" sslProtocol="TLS" connectionTimeout="20000"
           useBodyEncodingForURI="true" enableLookups="false" acceptorThreadCount="2" 
           socketBuffer="18000" keystoreType="PKCS12" truststoreFile="truststore.jks" 
           truststorePass="930204" truststoreType="JKS" 
           SSLCertificateKeyFile="../bin/server-key.pem" SSLCertificateFile="../bin/server-cert.pem" 
           maxHttpHeaderSize="262144" keystoreFile="server.p12" keystorePass="123456"/>

这里使用到了四个文件,各个文件都是在前面的步骤中生成的。
蓝色标识的server.p12和truststore.jks这两个文件需要放在tomcat的根目录下(如C:\Venustech\TSOC\webserver)。
红色的server-cert.pem和server-key.pem默认是放在tomcat的bin文件夹下的(如C:\Venustech\TSOC\webserver\bin)。

☆绿色部分为必须的,否则证书不生效。

(七)导入证书

将ca/ca.p12,client/client.p12分别导入到IE中去(打开IE->;Internet选项->内容->证书)。

ca.p12导入至受信任的根证书颁发机构,client.p12导入至个人。

重新访问系统。

C:\Users\wangsai>ipconfig /flushdns

Windows IP 配置,已成功刷新 DNS 解析缓存。

二:单项认证–服务器配置

1.生成服务器证书

C:\OpenSSL-Win32\bin\jks>keytool -genkey -alias server -keyalg RSA -keystore server.jks -validity 3650
keytool -genkey -alias server -keyalg -sha256 -newkey rsa:2048 -keystore server.jks -validity 3650

A、输入keystore密码:此处需要输入大于6个字符的字符串。

B、“您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP(就是你将来要在浏览器中输入的访问地址),否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。

C、你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息。

D、输入的密钥口令,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以,完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件。

2.接下来利用server.jks来签发证书

C:\Users\bwkt>keytool -export -alias server -file server.cer -keystore server.jks

3.修改server.xml文件

<Connector SSLEnabled="true" clientAuth="false"
    keystoreFile="C:\OpenSSL-Win32\bin\jks\server.jks" keystorePass="123456"
    maxSpareThreads="75" maxThreads="200" minSpareThreads="5" port="8443"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
    secure="true" sslProtocol="TLS"/>

微信公众号,欢迎扫码关注