以前基本上笔者对于安全性考虑的并不多,最近因为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 配置相关推荐

  1. Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置

    Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置 ============================== ©Copyright 蕃薯耀 2017 ...

  2. Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持

    2019独角兽企业重金招聘Python工程师标准>>> Nginx SSL+tomcat集群 Nginx tomcat no 不用https 最近做了个Web项目, 架构上使用了 N ...

  3. OpenSSL 把cer证书链以及key文件生成keystore,tomcat https配置

    最近接触的项目中用到HTTPS,并且申请了证书以及私钥,这一块接触的少 先整理出来,谨防以后忘记.因为是tomcat中配置的https,需要将证书转成keystore文件,通过openssl 先通过证 ...

  4. Keytool生成数字证书 + Tomcat https 配置

    参考:http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html https://baike.baidu.com/item/ht ...

  5. CAS_SSO单点登录实例详细步骤(转)、Tomcat ssl(https) 配置

    CAS_SSO单点登录实例详细步骤(转).Tomcat ssl(https) 配置 博客分类: SSO&CAS&Identity Java.Tomcat 0, 从CAS官网下载最新版本 ...

  6. reload端口 tomcat_CentOS 7配置tomcat https并改端口为443

    CentOS 7配置tomcat https并改端口为443: 安装tomcat: yum install tomcat (默认为tomcat 7) 配置tomcat证书(有公司https key.c ...

  7. [企业内部https证书配置]tomcat 7配置https的完整历程

    很久之前开发的一套Java Web系统,该系统是企业内部使用的系统, 部署在Tomcat上,一开始使用http 访问, 后来因为安全需求, 转换为https 访问. 在几年前https 访问之后一切正 ...

  8. tomcat配置重定向_在Tomcat上配置SSL以及从HTTP到HTTPS的设置自动重定向的步骤

    tomcat配置重定向 Secured Socket Layer (SSL) is the cryptography protocol to provide message security over ...

  9. Tengine(Nginx)配置SSL(https),应用服务器(Tomcat)无需配置

    2019独角兽企业重金招聘Python工程师标准>>> 要点:如果系统是内部用,可以通过openssl生成证书,只是访问的时候,浏览器会提示不信任, 1.生成证书,创建存放证书的目录 ...

最新文章

  1. IIS 7 应用程序池自动回收关闭的解决方案
  2. dubbo是长连接还是短连接_从快手短视频看,内容平台如何做好产品与用户的连接及运营实操...
  3. 大数据(生于2006,卒于2019)已死!
  4. 带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8
  5. Google 的服务,你用了那些?
  6. 数据结构之图的存储结构:十字链表法
  7. Spring源码分析-循环依赖
  8. hana抽数到mysql,HANA数据库管理Tenant DB常用操作
  9. 微信语音识别及网页获取用户信息
  10. 简述中断处理的6个步骤_基于SCDM软件的CFD前处理工作5个步骤
  11. 大数据分析需避免哪些错误
  12. 宏转录组方法_高级转录组分析和R语言数据可视化第12期 (线上线下同时开课)
  13. visual studio 2019配置dlib读取jpeg图片
  14. 黑马程序员2022年最新软件测试学习路线
  15. instantclient 配置 链接oracle,PLSQL与InstantClient的配置
  16. dell笔记本linux无网卡驱动,DELL R710 SERVER linux版本网卡驱动安装
  17. 弹出USB大容量存储设备时出问题 的解决方法
  18. 谷歌成功利用一台 54 量子比特的量子计算机
  19. EXCEL2016设置下拉选项,图文说明
  20. nginx服务器如何禁止访问目录(但是可以访问具体内容)

热门文章

  1. oracle遇null赋默认值,使用hibernate annotation 为非空列加上默认值
  2. ubuntu php fpm.conf,ubuntu下nginx+PHP-FPM安装配置
  3. F1 score的意义
  4. ubuntu11.10 mysql_Ubuntu11.10下mysql+apache+PHP
  5. mysql 死锁原因_Mysql并发时经典常见的死锁原因及解决方法
  6. Leetcode69场双周赛-第二题5961.链表最大孪生和
  7. 《系统集成项目管理工程师》必背100个知识点-31WBS的分解原则
  8. 给新手项目经理的12条建议
  9. 项目管理中的需求变更和解决之道
  10. Android中使用WebView加载本地html并支持运行JS代码和支持缩放