tomcat+https如何配置

基本概念

HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议;使用 HTTPS 连接时,服务器要求有公钥和签名的证书。

SSL 证书是一种数字证书,实现信息的加密传输。需要ssl证书的网站类型包括银行、购物类交易网站。

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

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

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

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

如何购买https证书?

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

如果是阿里云申请的SSL证书,下载tomcat版本的,里面会有xxx.pfx和密码文件

视频教程

 

配置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>

TLS与SSL(Secure Sockets Layer)

1、在理解的时候可以认为两者都是一致的,TLS协议是SSL协议的升级版。

协议是解决方案、标准,能够解决很多普适性的问题,在互联网开发中,TLS/SSL协议是最常见的安全解决方案,为什么呢?任何基于TCP/IP 的网络应用都会遇到安全问题,比如中间人攻击、无法对对端进行身份验证,传输的数据不具备机密性,这些问题都可以使用TLS/SSL协议解决。

对于应用层协议而言,它无需过多改变,引入TLS/SSL协议即可保证数据机密性和完整性。

2、中间人攻击概念

服务器传递给客户端的公钥可能被攻击者替换,这样安全性就荡然无存了。中间人攻击过程:

  • 客户端向服务端发送请求,期望获取服务器的RSA公钥,攻击者劫持了这个请求
  • 攻击者忽略客户端请求,向服务器发送请求,获取服务器的RSA公钥
  • 攻击者自己生成一对RSA密钥对,然后将攻击者的RSA公钥发送给客户端
  • 客户端通过攻击者的公钥加密密钥块A并发送给服务器,实际上发送给攻击者
  • 攻击者用自己的私钥解密,然后用服务器的公钥加密得到密钥块B,发送给服务器
  • 服务器用自己的私钥解密得到密钥块B
  •  
  • 客户端使用攻击者的密钥块A,采用AES算法加密数据并发给服务器端,实际上是发送给攻击者。
  • 攻击者采用AES算法解密出明文,客户端相当于泄露了隐私,攻击者使用密钥块B+AES算法加密明文后发送给服务器
  • 服务器使用密钥块B,采用AES算法加密数据并发送给攻击者
  • 攻击者使用密钥块B,采用AES算法解密出明文数据,此时服务器和客户端的加密数据被成功破解。

3、TLS/SSL协议中,客户端无法确认服务器端的真实身份,客户端访问某域名,接收到一个服务器公钥,但无法确定公钥是不是真正属于该域名,解决方案是引入证书

 

参考:

HTTPS 部署简要指南

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

HTTPS和HTTP的区别

https原理及tomcat配置https方法

通向架构师的道路(第二天)之apache tomcat https应用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值