Web服务器启用HTTPS的配置方法
本文于2016年3月完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。
nginx的配置方法
可以参考Jerry Qu的本博客 Nginx 配置之完整篇。
Tomcat的配置方法
以Java语言实现的Connector为例,介绍配置方法。
创建证书
Windows下,可以在CMD下执行命令
"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA -keystore tomcat.key
Unix下,可以在shell下执行命令
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.key
keytool提示输入口令时,输入changeit;然后按照要求输入其它信息,证书信息会生成到tomcat.key文件中。
注意,这里输入的口令可以不是changeit,但具体值需要和Connector配置中的keyPass,keystorePass保持一致,否则Tomcat启动后会报错提示无法加载证书文件。
关于证书,这是一个很大的话题,涉及范围很广,而Jackie其实一直以来并没有搞的很清楚,所以此处就不献丑了。
配置Connector
对于Apache Tomcat的7.0.X版本,修改$CATALINA_BASE/conf/server.xml中定义的Connector,增加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>
对于Apache Tomcat的9.0.X版本,与7.0.x版本的配置方法稍有不同,但同样需要修改$CATALINA_BASE/conf/server.xml中定义的Connector,样例如下:
<!-- 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"
scheme="https"
secure="true"
>
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/tomcat.key"
certificateValidation="false"
certificateKeyPassword="changeit"
certificateKeystorePassword="changeit"
type="RSA"
/>
</SSLHostConfig>
</Connector>
样例中配置了明文的口令,显然并不安全,存在安全上的漏洞。
解决的方法如下:
- 使用安全且可逆的加密算法生成密文;
- 修改tomcat相关的源码,使用加密算法还原得到明文,然后使用明文来加载证书。
过程并不复杂,可以参考tomcat安全配置之证书密码加密存储。
配置应用
修改应用的web.xml文件,增加如下配置
<session-config>
<cookie-config>
<!-- <http-only>true</http-only> --> <!-- 设置Cookie对浏览器加载的脚本不可见,默认值为true,因此无需配置 -->
<secure>true</secure> <!-- 设置Cookie使用HTTPS方式传递 -->
</cookie-config>
<session-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/*</url-pattern> <!-- 对于应用的所有URL都要求使用HTTPS方式访问 -->
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
当然可以依据实际情况调整样例中对URL的控制范围。
官网的参考资料
- Apache Tomcat 7 SSL/TLS Configuration HOW-TO
- Apache Tomcat 7 The HTTP Connector
- Apache Tomcat 9 SSL/TLS Configuration HOW-TO
- Apache Tomcat 9 The HTTP Connector
- The Java EE 6 Tutorial Specifying Security Constraints
关于HTTPS的阅读材料
百度的HTTPS实践
百度目前已实现全站启用HTTPS,来自百度运维部主页的如下文章记录了百度技术人员的实践经验,非常值得一读。
- 全站 https 时代的号角 : 大型网站的 https 实践系列
- 大型网站的 HTTPS 实践(1):HTTPS 协议和原理
- 大型网站的 HTTPS 实践(2):HTTPS 对性能的影响
- 大型网站的 HTTPS 实践(3):基于协议和配置的优化
- 大型网站的 HTTPS 实践(4):协议层以外的实践
Jerry Qu的分享
Jerry Qu的博客是一个好地方,有很多前端的资料,值得拜读。
其它资料
- HTTPS是如何保证连接安全:每位Web开发者都应知道的,原文
- 图解HTTPS
- Qualys SSL Labs的SSL Server Test工具
Web服务器启用HTTPS的配置方法的更多相关文章
- CentOS 6.3下Samba服务器的安装与配置方法(图文详解)
这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下 一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...
- web站点启用https (二)
接上篇内容 二.实际配置案例 实验案例:为web站点启用https 实验环境:seven公司有一个web站点,域名为www.seven.com,启用的身份验证方式是基本验证方式.随着业务发展想成为网上 ...
- Linux NFS服务器的安装与配置方法(图文详解)
这篇文章主要介绍了Linux NFS服务器的安装与配置方法(图文详解),需要的朋友可以参考下(http://xb.xcjl0834.com) 一.NFS服务简介 NFS 是Network File S ...
- 【转】Tomcat启用HTTPS协议配置过程
转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/53001846 http://www.ganecheng.tech/blog/530 ...
- Tomcat启用HTTPS协议配置过程
Article1较为简洁,Article2较为详细,测试可行. Article1 概念简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问 ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器启用https服务申请免费证书
背景分析 目前想在 web 上使用 HTTPS 的话, 你需要获得一个证书文件, 该证书由一个受浏览器信任的公司所签署. 一旦你获得了它, 你就在你的 web 服务器上指定其所在的位置, 以及与你关联 ...
- 启用https协议的方法
提醒:启用https协议会降低服务器性能,如非必要不必启用 一.用openssl生成密钥.证书: 1.生成RSA密钥的方法 openssl genrsa -out privkey.pem 2048 建 ...
- gitlab启用https的配置
vim /etc/gitlab/gitlab.rb external_url 'https://101.101.101.63' #启用https,默认是http (改端口:external_ur ...
- 一台服务器部署ShareWAF,后面接多台Web服务器,该如何配置?
ShareWAF做为WAF,可以不只是WAF,还可以充当负载或路由的角色. 比如可以有这样一种部署架构: 在此结构中,ShareWAF部署于一台服务器,后面接多台独立的WEB服务器. ShareWAF ...
- vs2013中将原来在iis express中的网站转到iis中时,报“无法在web服务器上调试”的解决方法
之前在网上也搜索过,但没有一个是正确的,后来在微软网站上发现问题的解决方法: 在web.config中,打开调试就可以了,具体方法为: 在web.config中 在以下配置节中加入以下代码 <c ...
随机推荐
- 逆向实战31——xhs—xs算法分析
前言 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 公众号链接 目标网站 aH ...
- macOS搭建SonarQube
目录 前言 准备环境 下载安装包 解压路径:/usr/local 创建数据库 修改配置文件 配置环境变量 启动SonarQube 扫描项目 项目报告介绍 总结 前言 初到新公司,接手8-10个java ...
- 【Azure 环境】如何解决Principal 2330xxxxxxxxxxxxxxxxxxxx31efc5 does not exist in the directory xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx问题
问题描述 在使用 Key Vault 和 Azure CLI 管理存储帐户密钥的官方文档中,其中有一步是"向 Key Vault 授予对你的存储帐户的访问权限", 其中CLI命令中 ...
- 【Azure Developer】Visual Studio 2019中如何修改.Net Core应用通过IIS Express Host的应用端口(SSL/非SSL)
问题描述 在VS 2019调试 .Net Core Web应用的时,使用IIS Express Host,默认情况下会自动生成HTTP, HTTPS的端口,在VS 2019的项目属性->Debu ...
- 【Azure 应用服务】Azure Function App Linux环境下的Python Function,安装 psycopg2 模块错误
问题描述 在Azure中创建Function App(函数应用), 用以运行Python代码(Python Version 3.7). 通过VS Code创建一个HttpTrigger的Functio ...
- 【Filament】基于物理的光照(PBR)
1 前言 自定义Blinn Phong光照模型中实现了基础的自定义光照,与现实的光照还是有些差别,本文将实现更逼真的光照效果,即基于物理的光照(PBR). 读者如果对 Filament 不太熟 ...
- 第18章_MySQL8其它新特性
# 目录: https://www.cnblogs.com/xjwhaha/p/15844178.html 1. MySQL8新特性概述 MySQL从5.7版本直接跳跃发布了8.0版本,可见这是一个令 ...
- SpringCloudStream消息驱动
1. 基本介绍 官方文档: https://spring.io/projects/spring-cloud-stream#learn 背景: 在一般的大型项目中,或者分布式微服务结构的系统里,一般都会 ...
- 代码片段管理软件 - 发现 utools 这个工具还行 windows软件
代码片段管理软件 - 发现 utools 这个工具还行 windows软件 介绍 这个软件不是专业的代码片段工具 好在还能凑合用 最完美的还是苹果那个软件,但是用的win没办法了 这个可以粘贴到vsc ...
- 阿里云Python UDP Server和client基础教程
壹: socket通信是常用的一种通信方式,熟练掌握,快速的入戏,是一个程序员必备的素质. 贰: 注意:udp和tcp的套接字: 服务端代码: #!/usr/bin/env python3 # -*- ...