1.创建.keystore
[root@centos apache-tomcat-6.0.37]# keytool -genkey -alias tomcat -keyalg RSA -keystore /root/tomcat/apache-tomcat-6.0.37/conf/.keystore
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]: free4lab
您的组织单位名称是什么?
[Unknown]: free4lab
您的组织名称是什么?
[Unknown]: free4lab
您所在的城市或区域名称是什么?
[Unknown]: beijing
您所在的州或省份名称是什么?
[Unknown]: beijing
该单位的两字母国家代码是什么
[Unknown]: CN
CN=free4lab, OU=free4lab, O=free4lab, L=beijing, ST=beijing, C=CN 正确吗?
[否]: y
输入<tomcat>的主密码
(如果和 keystore 密码相同,按回车):
[root@centos apache-tomcat-6.0.37]# cat conf/.keystore
2.然后修改tomcat配置文件server.xml
<Connector port="8800" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" protocol="org.apache.coyote.http11.Http11Protocol"
clientAuth="false" keystoreFile="/opt/tomcat/conf/.keystore" keystorePass="wewell" sslProtocol="TLS" />
然后重启tomcat访问即可:
遇到的坑 hppt和https不能同时访问
提供一个解决思路
- 1.相对协议
如果你的网站同时准备了 https 资源和 http 资源,那么,可以使用相对协议可以帮助你实现当网站引入的都是 http 资源,网站域名更换为 https 后的无缝切换。具体使用方法为:
//![](//domain.com/img/logo.png)
简而言之,就是将URL的协议(http、https)去掉,只保留//及后面的内容。这样,在使用https的网站中,浏览器会通过https请求URL,否则就通过http发送请求。附注:如果是浏览本地文件,浏览器通过file://协议发送请求,导致请求失败,因此本地测试最好是搭建一个本地服务器。
HTML5 Boilerplate 使用相对协议请求 Google CDN 中的 jQuery ,使用方式为:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script>
!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))
</script>
上面的例子中除了引用 Google CDN 中的文件外,还添加了一个本地 jQuery 链接,以便连接 Google CDN 失败后,使用本地副本。
代码判断过程为:首先检查 jquery 对象是否存在,如果存在,证明 Google CDN 运行正常;如果不存在,则说明连接 Google CDN 失败,引入本地 jQuery 库。
本猿认为,在国内相对特殊的网络环境中,Google CDN 请求缓慢甚至失败常有,因此不推荐引用 Google CDN 托管的各种库。即便有备用链接,浏览器还是会多次尝试请求 Google CDN 中的文件,这个过程可谓漫长,严重影响页面载入速度。
- 2.使用 iframe
使用 iframe 的方式引入 http 资源,比如在 https 里面播放优酷的视频,我们可以先在一个 http 的页面里播放优酷视频,然后将这个页面嵌入到 https 页面里就可以了。
另外一个典型的例子是在 https 页面里通过 Ajax 的方式请求 http 资源,Chrome 是不允许直接 Ajax 请求 http 的。如果两个页面的内容都可以控制的话,当前窗口可以 iframe 窗口进行通信。
- 3.其他用法
这个小技巧同样适用于 CSS :
.omg { background: url(//websbestgifs.net/kittyonadolphin.gif); }
附注:<link>
或@import
引入样式表时使用相对协议,IE7、IE8 会下载文件两次。
我的angularjs程序解决思路
所有的异步请求都是一个配置文件中定义的,我在程序开始运行时进行了判断,访问协议是http的就http访问,https的就https访问。