1.认证简介
ssl作为一个加密的协议,协议栈位于tcp协议之上,主要用来进行传输过程中的加密,加密的过程就涉及到证书相关的配置,本文重在讲解配置。
tomcat默认的https端口是8443。
简要描述一下,ssl握手的过程
a.客户端发送client hello ,主要包括客户端支持的ssl协议和客户端支持的加密算法。
b.服务器将支持的协议、从客户端列表选取的加密协议、服务器的证书发送给客户端,如果是双向的,服务器会要求客户端提供证书。
c、客户端校验证书是否过期、证书的颁发机构是否是浏览器中注册的证书颁发机构。如果不是,则给出提示信息.
d.客户端和服务器进行相应的加密和解密完成握手(写的比较粗略)
2.模拟环境
客户端:window7(X64) 谷歌浏览器(火狐浏览器可能有些问题) 证书储存路径:C:\Users\kefan\Desktop\conf
服务器端(centos7 64) tomcat7 /home/tomcat/apache-tomcat-7.0.75/keys
3.步骤
3.1单向认证
3.1.1服务器生成秘钥库(tomcat.keystore)
keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -dname "CN=192.168.233.133,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass tomcat -keypass tomcat
扫描二维码关注公众号,回复: 1610252 查看本文章3.1.2服务器生成颁发给客户端的证书文件(选配tomcat.cer)
keytool -export -alias tomcat -keystore tomcat.keystore -file tomcat.cer -storepass tomcat
3.1.3修改tomcat的配置文件(server.xml)
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="keys/tomcat.keystore"
keystorePass="tomcat"
truststoreFile="keys/tomcat.keystore"
truststorePass="tomcat"/>3.1.4测试
由于证书的颁发机构不是浏览器的根证书颁发机构,所以需要添加到信任列表中才能访问
3.1.5为了避免浏览器的添加信任可以选择导入3.1.2生成的证书文件(tomcat.cer)
上个步骤中,由于证书的颁发机构不存在与浏览器的根证书颁发机构,所以给出了警告,取消这个警告,需要将服务器颁发的证书添加到浏览器的根证书颁发机构中,将tomcat.cer下载到客户端,安装,在选择证书存储时,选择受信任的根证书颁发机构,导入完成之后,重启浏览器,不出现警告信息。
3.2双向认证
3.1.1服务器生成秘钥库(tomcat.keystore)
keytool -genkey -v -alias tomcat -keyalg RSA -validity 3650 -keystore tomcat.keystore -dname "CN=192.168.233.133,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass tomcat -keypass tomcat
3.1.2服务器生成颁发给客户端的证书文件(tomcat.cer)
keytool -export -alias tomcat -keystore tomcat.keystore -file tomcat.cer -storepass tomcat
3.1.3客户端生成秘钥库(client.p12)
keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -dname "CN=192.168.233.1,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass client -keypass client
3.1.4客户端生成颁发给服务器端的证书文件(client.cer)
keytool -export -alias client -keystore client.p12 -storetype PKCS12 -storepass client -rfc -file client.cer
3.1.5服务器导入客户端颁发的证书文件(tomcat.truststore)
keytool -import -v -file client.cer -keystore tomcat.truststore -storepass tomcat
3.1.6客户端添加秘钥库到浏览器(client.p12)
选择证书存储时,分别添加个人和受信任的根证书颁发机构.
3.1.7客户端添加服务器颁发的证书(tomcat.cer)
同单向配置中的导入选项。
3.1.8修改tomcat的配置文件
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="true"
sslProtocol="TLS"
keystoreFile="keys/tomcat.keystore"
keystorePass="tomcat"
truststoreFile="keys/tomcat.truststore"
truststorePass="tomcat"/>