HTTPS加密套件的笔记
本文于2016年5月份完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。
按照如下配置(适用于Tomcat 7.0.x),为Tomcat启用了HTTPS协议,用户访问站点时是否就安全了呢?
<!-- HTTP通道,跳转至8443端口 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
<!-- HTTPS通道 -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
URIEncoding="UTF-8"
SSLEnabled="true"
secure="true"
scheme="https"
clientAuth="false"
keystoreFile="conf/tomcat.key"
keyPass="changeit"
keystorePass="changeit"
>
</Connector>
原来还真不是。
文章SSL/TLS Deployment Best Practices中有如下描述:
SSL/TLS is a deceptively simple technology. It is easy to deploy, and it just works . . . except that it does not, really.The first part is true—SSL is easy to deploy—but it turns out that it is not easy to deploy correctly.
近日收到我厂发布的安全预警,要求对于我厂自研的网元:
- 网元之间使用ssh协议交互时,需要禁用不安全的协议,如SSL2.0、SSL3.0、TLS1.0;
- 网元使用ssh协议向外部开放服务时,默认情况下需要禁用不安全的协议;
- 使用自签名证书时,RSA算法的密钥长度至少为2048,并且签名算法应选择SHA256withRSA;
- cipher suite应避免使用RC4、3DES等不安全算法,同时禁用CBC模式;
- 。。。
但是,没看明白。预警中提到了太多的名词,但限于篇幅,没有为名词提供更多的解释。不过预警的详细信息中建议搜索关键词如cipher suite,了解相关的信息,便于进一步的分析和整改。
结果找到了Hardening Your Web Server’s SSL Ciphers,一篇很给力的文章,提到了如下的加固步骤:
If you configure a web server’s TLS configuration, you have primarily to take care of three things:
- disable SSL 2.0 (FUBAR) and SSL 3.01 (POODLE),
- disable TLS 1.0 compression (CRIME),
- disable weak ciphers (DES, RC4), prefer modern ciphers (AES), modes (GCM), and protocols (TLS 1.2).
另外从平台部门同事那边也获取到一份资料,名为《Web安全加固最佳实践》,内容也很强大。虽然没看完全看明白,但确认预警是足够了。
对于Web应用来说,安全协议和套件的配置取决于运行Tomcat的JDK、Tomcat自身、客户使用的浏览器。考虑项目当前的情况以及浏览器兼容性,从前述三个维度进行分析:
- 项目当前使用了JDK 8U65版本,支持TLS1.2;
- 项目当前使用的是平台部门加固过的Tomcat,支持TLS1.2;
- 项目需要兼容IE8、IE9、IE11,所以CBC相关的cipher suite还得保留;
最终加固后的Tomcat配置样例如下:
<!-- HTTPS通道 -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
URIEncoding="UTF-8"
SSLEnabled="true"
secure="true"
scheme="https"
clientAuth="false"
keystoreFile="conf/tomcat.key"
keyPass="changeit"
keystorePass="changeit"
sslProtocol="TLS"
sslEnabledProtocols="TLSv1.2,TLSv1.1"
ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"
>
</Connector>
如上仅是样例,并不是最佳实践。项目实际使用时,在$CATALINA_BASE/conf/catalina.properties中定义配置项,然后在$CATALINA_BASE/conf/server.xml中引用前述配置项,便于脚本读取、替换这些配置项的取值。
资料
TLS协议
Web加固
- Hardening Your Web Server’s SSL Ciphers
- POODLE Attack and SSLv3 Deployment
- SSL/TLS Deployment Best Practices
- New Attack Uses SSL/TLS Information Leak to Hijack HTTPS Sessions
- CRIME - How to beat the BEAST successor?
- CRIME wiki
Tomcat
如下资料介绍如何对Apache Tomcat进行加固。
- How to Disable Weak Ciphers and SSL 2.0 in Tomcat
- HOW TO -- Disable weak ciphers in Tomcat 7 & 8
- SSL/TLS, ciphers, perfect forward secrecy and Tomcat
- Configuring Supported Ciphers for Tomcat HTTPS Connections
- Securing Tomcat Encryption
openssl
如下资料介绍了openssl支持的加密套件,以及相关的材料。
JDK支持的cipher suites
如下分别来自IBM和Oracle,介绍了各自JDK支持的cipher suite。
- IBM JDK8 Cipher suites
- Java Cryptography Architecture Oracle Providers Documentation for JDK 8
- Java Cryptography Architecture Standard Algorithm Name Documentation for JDK 8
其它资料
- Cipher Suites in Schannel
- How to Determine the Cipher Suite for the Server and Client
- researchtls and ssl cipher suites
其它
使用浏览器访问poodle.io时,站点会给出浏览器是否使用SSLv3协议的提示,如下:
Good News! Your browser does not support SSLv3.
www.howsmyssl.com大致类似,也可以对浏览器进行检测,但提供的信息更多。
HTTPS加密套件的笔记的更多相关文章
- 详解 HTTPS 移动端对称加密套件优
近几年,Google.Baidu.Facebook 等互联网巨头大力推行 HTTPS,国内外的大型互联网公司很多也都已启用全站 HTTPS. Google 也推出了针对移动端优化的新型加密套件 Cha ...
- java实现HTTPS单向认证&TLS指定加密套件
1.HTTPS介绍 由于HTTP是明文传输,会造成安全隐患,所以在一些特定场景中,必须使用HTTPS协议,简单来说HTTPS=HTTP+SSL/TLS.服务端和客户端的信息传输都是通过TLS进行加密. ...
- Java加密与解密笔记(四) 高级应用
术语列表: CA:证书颁发认证机构(Certificate Authority) PEM:隐私增强邮件(Privacy Enhanced Mail),是OpenSSL使用的一种密钥文件. PKI:公钥 ...
- HTTPS加密流程超详解(一)前期准备
0.前言 前一阵子想写一个HTTPS的嗅探工具,之前只是大致了解SSL/TLS协议的加密流程,真正上起手来一步一步分析发现还是有点复杂的,于是我参考了wireshark的源码以及各种RFC,弄清楚了S ...
- HTTPS加密流程超详解(二)
2.进入正题 上篇文章介绍了如何简单搭建一个环境帮助我们分析,今天我们就进入正题,开始在这个环境下分析. 我们使用IE浏览器访问Web服务器根目录的test.txt文件并抓包,可以抓到如下6个包(前面 ...
- HTTPS加密流程理解
HTTPS加密流程 由于HTTP的内容在网络上实际是明文传输,并且也没有身份验证之类的安全措施,所以容易遭到挟持与攻击 HTTPS是通过SSL(安全套接层)和TLS(安全传输协议)的组合使用,加密TC ...
- 手摸手带你认识https涉及的知识,并实现https加密解密,加签解签
目录 http访问流程 https访问流程 证书 加密/解密 加签/验签 Java实现https 拓展 @ 看完整的代码,直接去完整代码实现,看实现完后会遇到的坑,直接去测试过程中的问题,包括经过代理 ...
- Nginx采用https加密访问后出现的问题
线上的一个网站运行了一段时间,应领导要求,将其访问方式更改为https加密方式.更改为https后,网站访问正常,但网站注册功能不能正常使用了! 经过排查,是nginx配置里结合php部分漏洞了一个参 ...
- 百度HTTPS加密搜索有什么用?
前段时间,我曾提到百度支持移动端HTTPS SSL加密搜索,用以保护用户隐私.最近,百度开始支持PC端HTTPS SSL加密搜索,现在可以启用 https://www.baidu.com 搜索.我很少 ...
- https加密实现
author:JevonWei 版权声明:原创作品 在httpd安装完成的基础上实现https加密 安装mod_ssl软件包 yum -y install mod_ssl http -M 显示mod_ ...
随机推荐
- 【LeetCode回溯算法#01】图解组合问题
组合问题 力扣题目链接(opens new window) 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合. 示例: 输入: n = 4, k = 2 输出: [ [2 ...
- 第一百一十六篇: JavaScript理解对象
好家伙,本篇为<JS高级程序设计>第八章"对象.类与面向对象编程"学习笔记 1.关于对象 ECMA-262将对象定义为一组属性的无序集合.严格来说,这意味着对象就是 ...
- 【Azure Redis 缓存 Azure Cache For Redis】Azure Redis删除 TLS 1.0 和 1.1的计划及问题
问题描述 Azure Redis 正式关闭TLS1.0和1.1关闭的时间 根据文档描述Azure Redis阶段2我们将停止支持 TLS 1.1 和 TLS 1.0,暂时计划 2020 年 12 月 ...
- 【Azure Developer】解答《美丽的数学》一书中P120页的一道谜题:寻找第四个阶乘和数
一道谜题 在观看<美丽的数学>一书中,在120页中有一道谜题: 数字145被称为一个阶乘和数, 因为它具有以下有趣的属性,如果我们将它的各位数字的阶乘相加,会得到该数字本身 1! +4! ...
- 树莓派修改根文件系统为f2fs
目录 前言 操作简述 我的实际操作步骤 1. 准备 2. 查看树莓派分区信息 3. 备份根分区 4. 格式化树莓派TF卡根分区为f2fs文件系统 5.恢复备份 前言 在TF卡.固态硬盘之类的nand存 ...
- STL-list模拟实现
#pragma once #include"16my_Itetator.h" //测试用 #include<iostream> //测试用 using std::cou ...
- Jmeter Jsonpath 语法你了解多少?
- nginx 代理 sftp转发流量
首先需要nginx安装有 stream模块,使用 nginx -V 查看下是否有 --with-stream,没有使用命令: yum -y install nginx-all-modules.noar ...
- 专访容智信息柴亚团:最低调的公司如何炼成最易用的RPA?
专访容智信息柴亚团:最低调的公司如何炼成最易用的RPA? 专访容智信息柴亚团:终极愿景是助力天下企业成为数字化孪生组织 文/王吉伟 6月,容智信息(容智)正式发布了全新的移动端RPA产品iBot Mo ...
- 【拉格朗日优化dp】P4365 [九省联考 2018] 秘密袭击 coat
[拉格朗日优化dp]P4365 [九省联考 2018] 秘密袭击 coat 题目简述 求树上所有连通块第 \(k\) 大点权(不足 \(k\) 点记为 \(0\))的和. \(1\leq k\leq ...