为何用https

来源:互联网 发布:知乎害人 编辑:程序博客网 时间:2024/06/05 18:23

基本概念

HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议;使用 HTTPS 连接时,服务器要求有公钥和签名的证书。SSL 证书是一种数字证书,实现信息的加密传输。需要ssl证书的网站类型包括银行、购物类交易网站

如果某个网站要求你填写信用卡信息,首先你要检查该网页是否使用 https 加密连接,如果没有,那么请不要输入任何敏感信息如信用卡号。

服务器采用https必须从CA 申请一个用于证明服务器用途类型的证书,大多数CA都是收费的。VeriSign即是一个著名的国外CA机构,工行、建行、招行、支付宝、财付通等网站均使用VeriSign的证书,而网易邮箱等非金融网站采用的是中国互联网信息中心 CNNIC颁发的SSL证书。一般来说,一个证书的价格不菲,以VeriSign的证书为例,价格在每年8000元人民币左右。听说StartSSL针对个人的基础型证书是免费的
该证书只有用于对应的服务器的时候,客户端才信任此主机,客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全。 所以目前所有的银行系统网站,关键部分应用都是https的.

有人说像我们的cms服务器, 客户端都是内部人自己使用,所以就肯定信任该服务器,使用https没有任何意义了;
而且为了安全保密,将一个网站所有的Web应用都启用SSL技术来加密,并使用HTTPS协议进行传输,那么该网站的性能和效率将会大大降低,
所以只需对那些涉及机密数据的交互处理使用HTTPS协议,总之不需要用https 的地方,就尽量不要用。
但是部分使用使用https?跨域操作会很麻烦,即使有解决办法。。

为确保每个用户都从HTTPS中受益,我们应该将所有传入的HTTP请求重定向至HTTPS。这意味着任何一个访问网站的用户都将自动切换到HTTPS,从那以后他们的信息传输就安全了。验证用户名和密码只是web上用户身份验证的一部分:像淘宝一样我们还需要记住某个已经验证过的特定用户,最常见的办法是使用session cookies,这通常意味着浏览器sessionId存储在一个cookie中,服务器端的数据库知道这个sessionId对应某个特定的session,而那个session又对应着某个特定的已验证用户。如果有人用某种方式得到了用户的sessionId,那么在登陆之后,他就获得了用户所有的权限,这和知道密码没什么两样。
但是,由于cookie的运作方式,浏览器每次向网站发请求时都会包含cookie信息。这样就导致用户的session cookie被浏览器发送出去。如果这时有人在监听,他们依然可以篡改用户的账户。

简而言之:由于允许访问用户账户的session cookie在每一次请求中都会被发送,仅仅保障登陆页面的安全是绝对不够的,除非用户已经连上了SSL,否则他们不应该传输任何机密信息,比如session cookie。

如何购买https证书?

一般https证书是免费的,但是免费的https证书会一直提示网络安全证书有问题,是不被浏览器等客户端识别的,如果不想一直提示,需要得到相关机构认可,需要购买相关认证机构的证书,比如 https://www.wosign.com/ 【注意】:证书一般是需要指定ip和域名的,如果要更改就得重新购买,所以在购买前,哪些产品需要用到此证书,一定考虑清楚相关ip和域名

配置Tomcat服务器

购买后的https证书会以一个jks文件给使用公司,比如:www.abcd.com.jks,端口为2443,外网端口12443,需要在server.xml里配置https连接,
<Connector port="8080" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="2443" /><Connector port="8099" protocol="AJP/1.3" redirectPort="2443" />
打开Tomcat根目录下的/conf/server.xml,找到Connector port="8443"配置段,修改为如下:<Connector port="2443" protocol="org.apache.coyote.http11.Http11NioProtocol"               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"               clientAuth="false" sslProtocol="TLS"    keystoreFile="/home/cxb/credential/https/abcd.com.jks" keystorePass="123321"    truststoreFile="/home/cxb/credential/https/abcd.com.jks" truststorePass="123321"/>(tomcat要与生成的服务端证书名一致)属性说明:clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证keystoreFile:服务器证书文件路径keystorePass:服务器证书密码truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书truststorePass:根证书密码

以上配置好后,访问https://www.abcd.com:12443即可。

配置web.xml

<login-config><auth-method>CLIENT-CERT</auth-method><realm-name>Client Cert Users-only Area</realm-name></login-config><security-constraint><web-resource-collection>       <web-resource-name>SSL</web-resource-name>       <url-pattern>/*</url-pattern></web-resource-collection><user-data-constraint>       <transport-guarantee>CONFIDENTIAL</transport-guarantee></user-data-constraint></security-constraint>


参考:

HTTPS 部署简要指南

IPSec,SSL VPN以及OpenVPN引发些许感慨

HTTPS和HTTP的区别

https原理及tomcat配置https方法

0 0
原创粉丝点击