?
HTTPS = SSL + HTTP
1.首先用jdk自带的工具keytool生成一个"服务器证书"
进入你的cmd命令行,在jdk安装目录bin目录下(如果没有配置环境变量的话)(JAVA_HOME/bin/) 敲入一下东东:
keytool -genkey -alias tomcat -keyalg RSA -keystore C:\tomcat.key
提示输入密码,使用Tomcat的默认值changeit //这里,你也可以定义自己的密码
输入相关信息后确认
将生成PCKS1.2格式的数字证书于C:\tomcat.key
?
?
===============ps:什么是数字证书、RSA是什么加密算法等============
1.0 你见过的DES,这个是什么:就是一个数据加密标准(首先由美国政府在1977年采用它对数据进行加密――理解为一个加密算法)
1.1 什么RSA――它是一种算法,也是一个公司的名称。见http://baike.baidu.com/view/696428.htm
1.2 什么是非对称加密和对称加密:非对称密钥加密就是加密和解密的密钥是不一样,对称密钥加密就是加密和解密的密钥是一样的
1.3 为什么要引进密钥这个概念,而不直接使用密码了?
?? ? ?可以这么理解:由于密码技术本身是公开的,技术都公布比较准化了,对每一个人都是可以用的,如果每个人都知道数据编码的方法。入侵者可以从网络上爬下数据包然后使用各种公开的解密算法进行解密,很快就可以破解了。。所以需要一些秘密信息来阻止他们解密――密钥就这么产生了(密钥他们不知道)
1.4 非对称加密密钥(公开密钥)以及对称加密密钥
其实他是两个密钥,比如我要加密,我就使用RSA(非对称加密算法)生成一对密钥<K,D>,两个密钥不相同,一个密钥用来加密用,一个密钥用来解密用。。那个加密的被称为公共密钥,发给接收方,告诉接收方,你如果有数据发给我,请用我这个公共密钥进行加密后再传给我,发过来的数据,我使用那个解密的密钥(私钥)来解密了。(我们发现公共密钥是公开的,并在网络上传输给对方,即使被黑客下载了,也无法解密啊,因为解密密钥没有在网络上传输的)
过程如:http://baike.baidu.com/view/444169.htm
假设两个用户A,B进行通信,A先发送信息给B,然后B发送信息给A
1. B先产生一对密钥k1a和k1b,前者用来加密,后者用来解密
2. B把密钥k1a发送给A;(因为k1a只能用来加密,截获方无法通过它来解密并读取密文)
3. A用密钥k1a加密一条信息,使之变成密文c1;
4. A把密文c1发送给B;
5. B用密钥k1b解密,并读取解密后的信息;
6. A产生一对密钥k2a和k2b,前者用来加密,后者用来解密
7. A把密钥k2a发送给B;
8. B用密钥k2a加密一条信息,使之变成密文c2;
9. B把密文c2发送给A;
10. A用密钥k2b解密,并读取解密后的信息;
同理对称的,加密也解密的密钥都是相同的拉
对称密钥加密的过程是:
假设两个用户A,B进行通信,A先发送信息给B,然后B发送信息给A
1. A先用密钥k1加密一条信息,使之变成密文c1;
2. A把密钥k1发送给B;(此时如果密钥被截获,截获方就可以解密并读取密文)
3. A把密文c1发送给B;
4. B用密钥k1解密,并读取解密后的信息
5. B用密钥k2加密一条信息,使之变成密文c2;
6. B把密钥k2发送给A;
7. B把密文c2发送给A;
8. A用密钥k2解密,并读取解密后的信息
1.5 什么是不可逆算法,他为什么不需要密钥了?
不可逆算法,就是说即使告诉你加密技术,你也没有办法解密。没办法还原的,就这个意思。。既然他没有办法还原,如果黑客偷到了他,即使知道加密技术,也没办法还原,那还需要密钥干嘛了?所以 嘎嘎,就不需要密钥了。。不过我国的王教授还是牛逼的把md5给。。。。那个了。
1.6、什么是数字证书
由权威机构CA中心签发的证书,很多购物网站都有注册这个证书了,当你访问这些网站时候,浏览器可以检查证书判断的出来你这个证书是不是权威CA签发的的,然后给出提示相应提示,这样用户就不会上错到钓鱼网了。。。什么是钓鱼网?很多网站跟别人做一模一样的,然后你以为是真的,输入用户名和密码,,这下完蛋了,你的数据就传送到钓鱼网那些b手上了。。
数字证书是一种公开密钥加密(非对称加密算法)。
1.7、https其实就是让用户提交数据的时候,浏览器使用http应用程序封装成http数据,然后通过SSL对数据进行加密,然后交给系统tcp协议层程序进行封装等,再到网络层,数据链路层,物理层。。。最后发送到网站服务器上面。
而一般的http协议的,浏览器使用http应用程序封装成http协议规定格式数据(都是明文的啊,密码,用户名都是可以看到的),如果黑客在监听你的电脑,爬下你的数据,就可以看到密码和用户名了,所以比较危险的。。咳,用户登录页面最好使用https来弄
===================ps结束=纯属看书后个人理解,不一定正确=======================
?
2、我的tomcat是6.0.24版本打开你的server.xml添加一下内容
?
?
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" minSpareThreads="5" maxSpareThreads="75" enableLookups="true" disableUploadTimeout="true" acceptCount="100" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" clientAuth="false" sslProtocol="TLS" keystoreFile="C:/tomcat.key" keystorePass="changeit"/>?
?
3、然后打开你的https://127.0.0.1:8443/项目名 ? ?就可以访问了,你可以发现浏览器地址栏开头有一个红色叉叉,嘎嘎,因为这个数字认证不被浏览器认为是权威的。。
?
?
待续~
?