一:双向认证–服务器配置
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
生成客户端证书导出成浏览器支持的.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"/>