在 Tomcat 中配置 SSL/TLS 以支持 HTTPS

本件详细介绍了如何通过几个简单步骤在 Tomcat 中配置 SSL/TLS 、使用 JDK 生成自签名的证书,最终实现在应用中支持 HTTPS 协议。

生产密钥和证书

Tomcat 目前只能操作 JKS、PKCS11、PKCS12 格式的密钥存储库。JKS 是 Java 标准的“Java 密钥存储库”格式,是通过 keytool 命令行工具创建的。该工具包含在 JDK 中。PKCS12 格式一种互联网标准,可以通过 OpenSSL 和 Microsoft 的 Key-Manager 来。

创建一个 keystore 文件保存服务器的私有密钥和自签名证书:

Windows:

“%JAVA_HOME%\bin\keytool” -genkey -alias tomcat -keyalg RSA

UNIX:

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

执行该命令后,首先会提示你提供 keystore 的密码。Tomcat 默认使用的密码是 changeit(全部字母都小写),当然你可以指定一个自定义密码(如果你愿意)。同样,你也需要将这个自定义密码在 server.xml 配置文件内进行指定,稍后再予以详述。

接下来会提示关于证书的一般信息,比如组织、联系人名称,等等。当用户试图在你的应用中访问一个安全页面时,该信息会显示给用户,所以一定要确保所提供的信息与用户所期望看到的内容保持一致。

最后,还需要输入密钥密码(key password),这个密码是这一证书(而不是存储在同一密码存储库文件中的其他证书)的专有密码。keytool 提示会告诉你,如果按下回车键,则自动使用密码存储库 keystore 的密码。当然,除了这个密码,你也可以自定义自己的密码。如果选择自定义密码,那么不要忘了在 server.xml 配置文件中指定这一密码。

该命令将在用户的主目录下创建一个新文件:.keystore

linux输入命令查找

# find / -name ‘*keystore‘
找到的地址 /root/.keystore

要想指定一个不同的位置或文件名,可以在上述的 keytool 命令上添加 -keystore 参数,后跟到达 keystore 文件的完整路径名。你还需要把这个新位置指定到 server.xml 配置文件上,见后文介绍。例如:

Windows:

“%JAVA_HOME%\bin\keytool” -genkey -alias tomcat -keyalg RSA 
-keystore \path\to\my\keystore

Unix:

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA 
-keystore /path/to/my/keystore

Tomcat 指定了 8443 端口为 HTTPS 访问端口。

修改配置

取消对 Tomcat 安装目录下 /conf/server.xml 中 “SSL HTTP/1.1 Connector” 一项的注释状态,并制定 keystore 的路径和密码:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               keystoreFile="${user.home}/.keystore" keystorePass="changeit"
               clientAuth="false" sslProtocol="TLS" />
 

Tomcat 指定了 8443 端口为 HTTPS 访问端口。

效果

首先,浏览器访问 HTTPS 支持的页面,https://192.168.1.143:8443

接着,浏览器访问 HTTP 的页面:

当用户首次访问你站点上的安全页面时,页面通常会提供给他一个对话框,包含证书相关细节(比如组织及联系方式等),并且询问他是否愿意承认该证书为有效证书,然后再进行下一步的事务。一些浏览器可能会提供一个选项,允许永远承认给出的证书的有效性,这样就不会在用户每次访问站点时打扰他们了。但有些浏览器不会提供这种选项。一旦用户承认了证书的有效性,那么在整个的浏览器会话期间,证书都被认为是有效的。

总结

虽然 SSL 协议的意图是尽可能有助于提供安全且高效的连接,但从性能角度来考虑,加密与解密是非茶馆耗费计算资源的,因此将整个 Web 应用都运行在 SSL 协议下是完全没有必要的,开发者需要挑选需要安全连接的页面。对于一个相当繁忙的网站来说,通常只会在特定页面上使用 SSL 协议,也就是可能交换敏感信息的页面,比如:登录页面、个人信息页面、购物车结账页面(可能会输入信用卡信息),等等。应用中的任何一个页面都可以通过加密套接字来请求访问,只需将页面地址的前缀 http: 换成 https: 即可。

时间: 2024-10-08 09:30:20

在 Tomcat 中配置 SSL/TLS 以支持 HTTPS的相关文章

CentOS6.5 下在Nginx中添加SSL证书以支持HTTPS协议访问

参考文献: 1. NginxV1.8.0安装与配置 2. CentOS下在Nginx中添加SSL证书以支持HTTPS协议访问 3. nginx配置ssl证书的方法 4.nginx强制使用https访问(http跳转到https) 5.nginx ssl 107 (net::ERR_SSL_PROTOCOL_ERROR) 无法与服务器建立安全连接 解决方法 配置过程如下: 我的nginx是 yum 安装 具体安装过程参考:[转]CENTOS 6.5 配置YUM安装NGINX+服务器负载均衡 一.安

在Tomcat中配置连接池和数据源

1.DataSource接口介绍 (1)DataSource 概述 JDBC1.0原来是用DriverManager类来产生一个对数据源的连接.JDBC2.0用一种替代的方法,使用DataSource的实现,代码变的更小巧精致,也更容易控制. 一个DataSource对象代表了一个真正的数据源.根据DataSource的实现方法,数据源既可以是从关系数据库,也电子表格,还可以是一个表格形式的文件.当一个DataSource对象注册到名字服务中(JNDI),应用程序就可以通过名字服务获得DataS

[转载]JavaEE学习篇之——网络传输数据中的密码学知识以及Tomcat中配置数字证书EE

原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/21716557 今天是学习JavaWeb的第二天,我们来了解什么呢?就了解一下Tomcat中配置数字证书的相关内容,但是在说这部分内容的时候,我们貌似得先说一下数字证书的相关概念,那说到数字证书的时候我们还得了解一些密码学的相关知识,这就是连锁反应吗?好吧不多说了,先来看一下密码学中关于网络中数据传输的知识. 首先来了解一下网络上传输数据的加密方式: 第一种是对称加密:就是

Spring MVC 使用tomcat中配置的数据源

Spring MVC 使用tomcat中配置的数据源 配置tomcat数据源 打开tomcat目录下的conf目录,编辑sever.xml目录.在<GlobalNamingResources>标签中添加数据源配置: <Resource name="jdbc/dbsourse" scope="Shareable" type="javax.sql.DataSource" factory="org.apache.tomcat

在tomcat中配置JNDI

1.关于tomcat的server.xml配置文件 在tomcat的配置文件conf/server.xml文件的<Host>标签中加入<Context>标签可以标记当前Web应用,应用随系统启动而加载,如: <Context path="" docBase="E:\TestPro\WebRoot" reloadable="true" > </Context> 这里讲path属性标记为空,访问系统时就

在linux的tomcat中配置https及自动跳转

公司业务发展需要添加https,苹果在2017年1月1日以后认为https是安全的所以很多网站都进行了升级.苹果在iOS 9中引入的一项隐私保护功能,屏蔽明文http资源加载,连接必须经过更安全的https.苹果目前允许开发者暂时关闭ATS,可以继续使用HTTP连接,但到年底所有官方商店的应用都必须强制性使用ATS.,如果不升级苹果端是不支持的. 说一下证书,由于http的协议和https的协议不一样,所以用的端口也不一样http是80而https是443,而且https协议是由SSL+http

Tomcat中的ssl安全信道的实现

为了实现https协议通信,tomcat需要利用JSSE把SSL/TLS协议集成到自身系统上,通过上一节我们知道不同的厂商可以实现自己的JSSE,而tomcat默认使用的是以前sun公司开发实现的包而且由JDK自带. Tomcat实现http及https通信的基础是什么?其实http与https的不同就是在创建通信套接字服务器时的不同,http是没有任何加密措施的套接字服务器,而https是靠嵌套了一层密码机制的套接字服务器.在实现时只需根据实际通信情况创建对应的套接字服务器,这时你应该果断想起

Tomcat:配置SSL

SSL简述 SSL就是安全套接字层,是一种允许web浏览器和 web服务器通过安全连接通信的技术.这是一个双向的过程,这意味着 服务器和浏览器在发送数据之前加密所有交流的数据. SSL有一个重要的特点,就是需要认证.也就是说当使用Web浏览器访问Server时,Server会提供给浏览器一个证书. 在使用tomcat时,存在下面几种情况: 1)默认情况下,是不启用SSL的,通过https协议访问应用肯定是失败的. 2)只启用SSL时,只能通过https协议来访问.(这里不说AJP) 3)同时启用

Tomcat中配置自定义404错误页面

404,50x这种错误经常遇到. 如果%CATALINA_HOME%\conf\web.xml和具体应用中都有设置%CATALINA_HOME%\webapps\ROOT\WEB-INF\web.xml 则应用中的生效. 如何设置一个友好的用户体验,以windows环境为例: 添加发生异常时,默认的文件,文件位置如下(如果没有设置reloadable为true或autoDeploy="true",则需要重启tomcat让更改的web.xml生效): (1)%CATALINA_HOME%