一 、1. 单向认证,就是传输的数据加密过了,但是不会校验客户端的来源
2. 双向认证,如果客户端浏览器没有导入客户端证书,是访问不了 web 系统的,找不到地址,想要用系统的人没有证书就访问不了系统 HTTPS 概念
二、1. 单向认证,就是传输数据加密过,但是不会教研客户来源
2. 双向认证,如果客户端浏览器没有导入客户端证书,是访问不了 web 系统的,找不到地址,想要用系统的人没有证书是访问不了 https 的
2.1https 概念,是以安全为目标的 http 通道,就是安全版的 http,就是 http 加入 ssl 安全认证,https 的基础就是 ssl 所以加密详细内容就需要 ssl
三、https 和 http 的区别
1.https 协议需要到 ca 申请证书,一遍免费证书很少,需要缴费
2.http 时超文本协议,信息的传输通常都是明文,而 https 是经过 ssl 加密后再进行传输
3.http 和 https 使用的是完全不同的连接方式,用得默认端口都不一样,http 默认端口:80,而 https 默认端口为 432
4.http 的连接很简单,是无状态的,而 https 协议是由 ssl+http 协议构建的可进行加密、传输身份认证的网络协议,比 http 协议安全
四、https 的作用
1. 主要作用分为俩种
1.1 建立信息安全通道,保证数据传输的安全
1.2 确认网站的安全性
2. 一般意义上的 https 就是服务有一个证书,主要目的是保证服务的器就是他声称的服务器,意思就是服务端和客户端通信都是 ssl 加密的。
3. 客户端证书其实就是通信时,不止验证你的用户名密码,还要验证你的 ca 证书
五、HTTPS_SSL 配置的步骤:
keytool -list -v -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
2. 删除已创建的证书
keytool -delete -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
3. 创建证书
3.1 服务器中生成证书:
(注:生成证书时,CN 要和服务器的域名相同,如果在本地测试,则使用 localhost)
keytool -genkey -alias tomcat -keyalg RSA -keystore d:/mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass changeit
keytool 是 JDK 提供的证书生成工具,所有参数的用法参见 keytool –help
-genkey 创建新证书
-v 详细信息
-alias 以 "mykey" 作为该证书的别名。这里可以根据需要修改
-keyalgRSA 指定算法
-keysize 指定算法加密后密钥长度
-keystorec:\sdust.keystore 保存路径及文件名
-validity3650 证书有效期,单位为天
CN = 你的 ip,OU=cn,O=cn,L=cn,ST=cn,c=cn 基本信息的配置
CN = 你的 ip 这个配置务必注意
-storepass 123456789 -keypass 123456789 密码设置
3.2 导出证书,由客户端安装:
keytool -export -alias tomcat -keystore d:/mykeystore -file d:/mycerts.cer -storepass changeit
3.3 客户端配置:为客户端的 JVM 导入密钥 (将服务器下发的证书导入到 JVM 中)
keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -file d:/mycerts.cer -storepass changeit
4. 配置 Tomcat SSL
修改 server.xml 中的 SSL 服务
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="server.keystore" keystorePass="changeit"/>
属性说明:clientAuth: 设置是否双向验证,默认为 false,设置为 true 代表双向验证 keystoreFile: 服务器证书文件路径 keystorePass: 服务器证书密码 truststoreFile: 用来验证客户端证书的根证书,此例中就是服务器证书 truststorePass: 根证书密码
5. 常见问题
主要原因为在客户端未将服务器下发的证书导入到 JVM 中,可以用
keytool -list -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
来查看证书是否真的导入到 JVM 中。
原因是在你的 home 目录下是否还有. keystore 存在。如果存在那么把他删除掉,后再执行
或者删除 "%JAVA_HOME%/jre/lib/security/cacerts 再执行
建议直接删掉 cacerts 再导入
来源: http://www.bubuko.com/infodetail-2449912.html