本文于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配置中的keyPasskeystorePass保持一致,否则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>

样例中配置了明文的口令,显然并不安全,存在安全上的漏洞。

解决的方法如下:

  1. 使用安全且可逆的加密算法生成密文;
  2. 修改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的控制范围。

官网的参考资料

关于HTTPS的阅读材料

百度的HTTPS实践

百度目前已实现全站启用HTTPS,来自百度运维部主页的如下文章记录了百度技术人员的实践经验,非常值得一读。

Jerry Qu的分享

Jerry Qu的博客是一个好地方,有很多前端的资料,值得拜读。

其它资料

Web服务器启用HTTPS的配置方法的更多相关文章

  1. CentOS 6.3下Samba服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下   一.简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...

  2. web站点启用https (二)

    接上篇内容 二.实际配置案例 实验案例:为web站点启用https 实验环境:seven公司有一个web站点,域名为www.seven.com,启用的身份验证方式是基本验证方式.随着业务发展想成为网上 ...

  3. Linux NFS服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了Linux NFS服务器的安装与配置方法(图文详解),需要的朋友可以参考下(http://xb.xcjl0834.com) 一.NFS服务简介 NFS 是Network File S ...

  4. 【转】Tomcat启用HTTPS协议配置过程

    转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/53001846 http://www.ganecheng.tech/blog/530 ...

  5. Tomcat启用HTTPS协议配置过程

    Article1较为简洁,Article2较为详细,测试可行. Article1 概念简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问 ...

  6. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器启用https服务申请免费证书

    背景分析 目前想在 web 上使用 HTTPS 的话, 你需要获得一个证书文件, 该证书由一个受浏览器信任的公司所签署. 一旦你获得了它, 你就在你的 web 服务器上指定其所在的位置, 以及与你关联 ...

  7. 启用https协议的方法

    提醒:启用https协议会降低服务器性能,如非必要不必启用 一.用openssl生成密钥.证书: 1.生成RSA密钥的方法 openssl genrsa -out privkey.pem 2048 建 ...

  8. gitlab启用https的配置

    vim /etc/gitlab/gitlab.rb external_url 'https://101.101.101.63'    #启用https,默认是http (改端口:external_ur ...

  9. 一台服务器部署ShareWAF,后面接多台Web服务器,该如何配置?

    ShareWAF做为WAF,可以不只是WAF,还可以充当负载或路由的角色. 比如可以有这样一种部署架构: 在此结构中,ShareWAF部署于一台服务器,后面接多台独立的WEB服务器. ShareWAF ...

  10. vs2013中将原来在iis express中的网站转到iis中时,报“无法在web服务器上调试”的解决方法

    之前在网上也搜索过,但没有一个是正确的,后来在微软网站上发现问题的解决方法: 在web.config中,打开调试就可以了,具体方法为: 在web.config中 在以下配置节中加入以下代码 <c ...

随机推荐

  1. MYSQL查询数据表中某个字段包含某个数值

    当某个字段中字符串是"1,2,3,4,5,6"或者"123456"查询数据表中某个字段是否包含某个值1:模糊查询  使用like       select * ...

  2. Java - 将TXT文本文件转换为PDF文件

    与TXT文本文件,PDF文件更加专业也更适合传输,常用于正式报告.简历.合同等场合.项目中如果有使用Java将TXT文本文件转为PDF文件的需求,可以查看本文中介绍的免费实现方法. 免费Java PD ...

  3. Hdf5开发笔记(一):hdf5介绍,在windows上编译msvc2015x64版本

    前言   matlab的matio库需要使用到hdf5,编译hdf5的msvc2015x64版本. HDF5介绍   HDF(Hierarchical Data Format)是一种设计用于存储和组织 ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (204)-- 算法导论15.3 3题

    三.考虑矩阵链乘法问题的一个变形:目标改为最大化矩阵序列括号化方案的标量乘法运算次数,而非最小化.此问题具有最优子结构性质吗?需要写代码的时候,请用go语言. 文心一言,代码正常运行: 首先,我们要明 ...

  5. 十一: 数据库缓冲池(buffer pool)

    数据库缓冲池(buffer pool) InnoDB 存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页 面(包括读页面.写页面.创建新页面等操作).而磁盘 I/O 需 ...

  6. Java 小练习(2) 利用面向对象的编程方法 设计类Circle计算圆的面积

    1 package com.bytezero.exer; 2 /*** 3 * 4 * @Description 5 * @author Bytezero·zhenglei! Email:420498 ...

  7. 原生、复杂流程操作、融合专家系统,澜码科技发布企业级Agent平台AskXBOT

    AI原生企业级Agent构建平台具备哪些特性?澜码AskXBOT平台揭晓答案 澜码科技正式发布了AI原生企业级Agent平台AskXBOT,怎么看待这个产品? 原生.复杂流程操作.融合专家系统,澜码科 ...

  8. Spring Cloud 系列之Hystrix、Ribbon、Feign 源码剖析(一)引子

    系列目录 Spring Cloud 系列之Hystrix.Ribbon.Feign 源码剖析(一)引子 Spring Cloud 系列之Hystrix.Ribbon.Feign 源码剖析(二)原理概括 ...

  9. Zabbix“专家坐诊”第182期问答汇总

    问题一: Q:像烽火.浪潮这种没有ilo的设备怎么监控他们的硬件状态呢? A:如果没有ilo,可以使用其他硬件监控软件,例如HP Insight Manager.IBM Director.Dell O ...

  10. vscode 翻译插件推荐 Easy Translator,只因为有音标,和位置好

    vscode 翻译插件推荐 Easy Translator,只因为有音标,和位置好