tomcat https 配置
以前基本上笔者对于安全性考虑的并不多,最近因为saas平台要开始逐渐推广,所以需要开始逐渐加强xss/crsf/https等措施以避免潜在的安全性风险。本文简单的记录下tomcat下https的配置。
注意:在实际的系统中,很少会直接在tomcat上配置https对外提供服务,一般是通过在nginx上配置https接入,转发给内部tomcat服务器时转换为http。具体可参考http://www.cnblogs.com/zhjh256/p/6262620.html。
PS:获取证书的方式有很多种,去三方网站申请(免费版和收费版)或自己生成(jdk自带的keytool工具,使用jdk keytool生成的数字证书是自签名的。自签名就是指证书只能保证自己是完整且没有经过非法修改,但是无法保证这个证书是属于谁的。为了对自签名证书进行认证,需要每个客户端和服务端都交换自己自签名的私有证书,对于一个大型网站或者应用服务器,这种工作量是非常大的。
各浏览器以及版本、各类库比如openssl、jsse等对TLS的支持情况可参考https://en.wikipedia.org/wiki/Transport_Layer_Security,其中有非常完整的说明以及各版本的支持情况。当前openssl的发行版本包括如下:
- 0.9.x
- 1.0.0
- 1.0.1
- 1.0.2
- 1.1.0
- fips
可从openssl官方网站下载。
提及TLS,还设计一个关键的概念startTls,因为在SSL开始的握手阶段,仍然是采用明文进行交互的,这使得在初始阶段可能发生被截获的情况,为了避免这种风险,产生了startTls,具体可见https://wiki.inspircd.org/STARTTLS_Documentation,https://en.wikipedia.org/wiki/Opportunistic_TLS。
基于自签名的SSL双向认证,只要客户端或者服务端修改了密钥和证书,就需要重新进行签名和证书交换,这种调试和维护工作量是非常大的。因此,在实际的商用系统中往往会使用第三方CA证书颁发机构进行签名和验证。我们的浏览器就保存了几个常用的CA_ROOT。每次连接到网站时只要这个网站的证书是经过这些CA_ROOT签名过的。就可以通过验证了。
)。当然我们自己测试的时候,肯定是要用免费的。服务器类型:Apache,IIS,Nginx,Tomcat, other Server。就是说,ssl证书时按照这几种类型生成对应不同文件的,当然配置也不一样。
比如配置tomcat的https,免费的一般建议直接使用java安装时自带的keytool即可,如果是nginx,则需要使用openssl生成(如果是三方CA颁发的,直接在对应的网站上操作生成即可)。
建议把相关证书和key放在$TOMCAT_HOME/security下,便于统一管理。
建议命名规范为:
ca-key.pem 一般来说是CA证书的rsa私钥文件
ca.pem 可信Certificate Authority (CA)证书,通常内部通信的话,可以自签名,通过openssl req -new -x509生成。
client-cert.pem 客户端公钥证书(一般HTTPS不用,浏览器会自动管理,但是自行开发的客户端就需要了,比如java rpc,jdbc客户端)
client-key.pem 客户端私钥(一般HTTPS不用,浏览器会自动管理,但是自行开发的客户端就需要了,比如java rpc,jdbc客户端)
server-cert.pem 服务器公钥证书,必须由拥有它的CA认证
server-key.pem 服务器私钥
D:\Java\jdk1.8.0_102\bin>keytool
密钥和证书管理工具
命令:
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令
使用 "keytool -command_name -help" 获取 command_name 的用法
D:\Java\jdk1.8.0_102\bin>keytool -genkey -alias tomcat -keyalg RSA
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: ldtrader.com #这里的名称很重要,建议使用官网的地址
您的组织单位名称是什么?
[Unknown]: ldtrader
您的组织名称是什么?
[Unknown]: ldtrader
您所在的城市或区域名称是什么?
[Unknown]: hz
您所在的省/市/自治区名称是什么?
[Unknown]: zj
该单位的双字母国家/地区代码是什么?
[Unknown]: cn
CN=ldtrader.com, OU=ldtrader, O=ldtrader, L=hz, ST=zj, C=cn是否正确?
[否]: y
输入 <tomcat> 的密钥口令
(如果和密钥库口令相同, 按回车):
完毕后会在当前目录下,会在$HOME下(比如C:\Users\dell)产生一个:.keystore文件,将它拷贝到tomcat的bin目录下。
D:\apache-tomcat-7.0.69\bin>keytool -selfcert -alias tomcat -keystore .keystore
输入密钥库口令:
D:\apache-tomcat-7.0.69\bin>keytool -export -alias tomcat -keystore .keystore -storepass tomcat -rfc -file tomcat.cer
存储在文件 <tomcat.cer> 中的证书
此时会在D:\apache-tomcat-7.0.69\bin>下生成tomcat.cer证书文件。将该文件发给使用者,让他们安装该证书,并将证书安装在“受信任的根证书颁发机构”区域中。
1.2 配置tomcat
打开$CATALINA_BASE/conf/server.xml
找到“SSL HTTP/1.1 Connector” 那一块,取消注释并将它改成:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="bin/.keystore" keystorePass="tomcat"
clientAuth="false" sslProtocol="TLS" />
修改windows机器的host文件,增加一行:
127.0.0.1 ldtrader.com
接下来重启tomcat,用https://ldtrader.com:8443/访问网站验证一下就行了。
可参考链接http://jingyan.baidu.com/article/ce43664919d1383773afd39f.html,进行chrome证书导入后就可直接访问,不会再提示下列信息:
keytool参考手册https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html
通常来说配置https算是web安全性中最省事的环节,更重要的是,应用中对于session/cookie/csrf/xss进行保护。比如:
对于cookie来说,需要进行HttpOnly和Secure保护,如下:
cookie.setHttpOnly(true);
cookie.setSecure(true);
启用HSTS,通常在http服务器层进行设置,"Strict-Transport-Security", "max-age=31536000; includeSubDomains"
等等。
tomcat https 配置相关推荐
- Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置
Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置 ============================== ©Copyright 蕃薯耀 2017 ...
- Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持
2019独角兽企业重金招聘Python工程师标准>>> Nginx SSL+tomcat集群 Nginx tomcat no 不用https 最近做了个Web项目, 架构上使用了 N ...
- OpenSSL 把cer证书链以及key文件生成keystore,tomcat https配置
最近接触的项目中用到HTTPS,并且申请了证书以及私钥,这一块接触的少 先整理出来,谨防以后忘记.因为是tomcat中配置的https,需要将证书转成keystore文件,通过openssl 先通过证 ...
- Keytool生成数字证书 + Tomcat https 配置
参考:http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html https://baike.baidu.com/item/ht ...
- CAS_SSO单点登录实例详细步骤(转)、Tomcat ssl(https) 配置
CAS_SSO单点登录实例详细步骤(转).Tomcat ssl(https) 配置 博客分类: SSO&CAS&Identity Java.Tomcat 0, 从CAS官网下载最新版本 ...
- reload端口 tomcat_CentOS 7配置tomcat https并改端口为443
CentOS 7配置tomcat https并改端口为443: 安装tomcat: yum install tomcat (默认为tomcat 7) 配置tomcat证书(有公司https key.c ...
- [企业内部https证书配置]tomcat 7配置https的完整历程
很久之前开发的一套Java Web系统,该系统是企业内部使用的系统, 部署在Tomcat上,一开始使用http 访问, 后来因为安全需求, 转换为https 访问. 在几年前https 访问之后一切正 ...
- tomcat配置重定向_在Tomcat上配置SSL以及从HTTP到HTTPS的设置自动重定向的步骤
tomcat配置重定向 Secured Socket Layer (SSL) is the cryptography protocol to provide message security over ...
- Tengine(Nginx)配置SSL(https),应用服务器(Tomcat)无需配置
2019独角兽企业重金招聘Python工程师标准>>> 要点:如果系统是内部用,可以通过openssl生成证书,只是访问的时候,浏览器会提示不信任, 1.生成证书,创建存放证书的目录 ...
最新文章
- IIS 7 应用程序池自动回收关闭的解决方案
- dubbo是长连接还是短连接_从快手短视频看,内容平台如何做好产品与用户的连接及运营实操...
- 大数据(生于2006,卒于2019)已死!
- 带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8
- Google 的服务,你用了那些?
- 数据结构之图的存储结构:十字链表法
- Spring源码分析-循环依赖
- hana抽数到mysql,HANA数据库管理Tenant DB常用操作
- 微信语音识别及网页获取用户信息
- 简述中断处理的6个步骤_基于SCDM软件的CFD前处理工作5个步骤
- 大数据分析需避免哪些错误
- 宏转录组方法_高级转录组分析和R语言数据可视化第12期 (线上线下同时开课)
- visual studio 2019配置dlib读取jpeg图片
- 黑马程序员2022年最新软件测试学习路线
- instantclient 配置 链接oracle,PLSQL与InstantClient的配置
- dell笔记本linux无网卡驱动,DELL R710 SERVER linux版本网卡驱动安装
- 弹出USB大容量存储设备时出问题 的解决方法
- 谷歌成功利用一台 54 量子比特的量子计算机
- EXCEL2016设置下拉选项,图文说明
- nginx服务器如何禁止访问目录(但是可以访问具体内容)
热门文章
- oracle遇null赋默认值,使用hibernate annotation 为非空列加上默认值
- ubuntu php fpm.conf,ubuntu下nginx+PHP-FPM安装配置
- F1 score的意义
- ubuntu11.10 mysql_Ubuntu11.10下mysql+apache+PHP
- mysql 死锁原因_Mysql并发时经典常见的死锁原因及解决方法
- Leetcode69场双周赛-第二题5961.链表最大孪生和
- 《系统集成项目管理工程师》必背100个知识点-31WBS的分解原则
- 给新手项目经理的12条建议
- 项目管理中的需求变更和解决之道
- Android中使用WebView加载本地html并支持运行JS代码和支持缩放