一、单向认证
数据传输加密,但不对客户端来源进行验证其合法性。也就是客户端不限制访问客户,仅对数据的传输进行加密。
二、双向认证
对数据 传输进行加密,同时,对客户端来源进行验证,只有拥有合法客户端证书的用户,才能访问。
三、单向认证的配置
1、生成服务器端证书
在jdk安装目录下的bin中,使用keytool进行证书的生成。
keytool -genkey -v -alias tomcat -keyalg rsa -vilidity 3650 -keystore d:\tomcat.keystore -dname "cn=localhost,ou=cn,o=cn,l=cn,st=cn,c=cn" -storepass password -keypass password
假设目标服务器的域名为:localhost。keystore文件存放目录为:d:\tomcat.keystore。密码为:password。
keytool -export -aloas tomcat-keystore d:\tomcat.keystore -file d:\tomcat.cer -storepass password
tomcat.cer在浏览器提示不信任时,可以导入证书。从而不在提示不信任信息。
2、配置tomcat服务器
<connector port="8443" protocol="http/1.1" sslenabled="true" maxthreads="150" scheme="https" secure="true" clientauth="false" sslprotocol="tls" keystorefile="d:\tomcat.keystore" keystorepass="password"/>
3、启动服务器,访问http://localhost:8443/
四、双向认证配置
1、生成服务器端证书
keytool -genkey -v -alias tomcat -keyalg rsa -vilidity 3650 -keystore d:\tomcat.keystore -dname "cn=localhost,ou=cn,o=cn,l=cn,st=cn,c=cn" -storepass password -keypass password
假设目标服务器的域名为:localhost。keystore文件存放目录为:d:\tomcat.keystore。密码为:password。
keytool -export -aloas tomcat-keystore d:\tomcat.keystore -file d:\tomcat.cer -storepass password
tomcat.cer在浏览器提示不信任时,可以导入证书。从而不在提示不信任信息。
2、生成客户端证书
keytool -genkey -v -alias xajava -keyalg rsa -storetype pkcs12 -validity 3650 -keystore d:\xajava.p12 -dname "cn=xajava,ou=cn,o=cn,l=cn,st=cn,c=cn" -storepass password -keypass password
3、客户端证书加入服务端信任列表
先把客户端证书导出为一个单独的 cer 文件,使用如下命令:
keytool -export -alias xajava -keystore d:\xajava.p12 -storetype pkcs12 -storepass password -rfc -file d:\xajava.cer
添加到服务器证书库
keytool -import -v -file d:\xajava.cer -keystore d:\tomcat.keystore -storepass password
4、配置tomcat
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="d:\tomcat.keystore"
keystorePass="password" truststoreFile="d:/tomcat.keystore" truststorePass="password">
</Connector>