个性化阅读
专注于IT技术分析

如何在Apache Tomcat中实现SSL?

点击下载

本文概述

在Tomcat服务器中设置SSL/TLS证书的分步指南。

保护Tomcat的基本任务之一是配置SSL证书, 因此可以通过HTTPS访问Web应用程序。

有很多方法可以实现这一目标。

  • 你可以在负载均衡器处终止SSL
  • 在CDN级别实施SSL
  • 首先使用Apache, Nginx等Web服务器并在其中实施SSL

但是, 如果你不使用以上任何内容或将其用作前端, 或者需要直接在Tomcat中部署SSL, 那么以下内容将为你提供帮助。

在本文中, 我们将执行以下操作。

  • 生成CSR(证书签名请求)
  • 在密钥库文件中导入证书
  • 在Tomcat中启用SSL
  • 配置TLS协议
  • 更改Tomcat以侦听443端口
  • 测试Tomcat的SSL漏洞

开始吧…

准备SSL/TLS证书

第一步是生成一个CSR, 并由证书颁发机构签名。我们将使用keytool实用程序来管理证书。

  • 登录到Tomcat服务器
  • 转到tomcat安装路径
  • 创建一个名为ssl的文件夹
  • 执行命令以创建密钥库
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks

上面的命令中有两个变量可能需要更改。

  1. 别名–最好使其有意义, 以便将来可以快速识别。我更喜欢将其保留为域名。
  2. 文件名–同样, 保留域名也很好。

例如:

[[email protected] ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: bloggerflare.com
What is the name of your organizational unit?
[Unknown]: Blogging
What is the name of your organization?
[Unknown]: Geek Flare
What is the name of your City or Locality?
[Unknown]:
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]:
Is CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Unknown, ST=Unknown, C=Unknown correct?
[no]: yes

Enter key password for <bloggerflare>
(RETURN if same as keystore password):

[[email protected] ssl]#

注意名字和姓氏问题。我认为这有点误导。这不是你的名字, 而是你要保护的域名。

提供所有信息后, 它将在当前的工作目录中创建一个密钥库文件。

接下来将使用下面的命令使用新创建的密钥库生成新的CSR。

keytool -certreq -alias bloggerflare -keyalg RSA -file bloggerflare.csr -keystore bloggerflare.jks

这将创建一个CSR, 你需要将其发送给证书颁发机构以对其进行签名。如果你在玩耍, 那么你可以考虑使用免费的证书提供者, 否则请选择高级证书提供者。

我已经签署了证书, 并且将使用以下命令继续导入密钥库。

  • 导入根证书由提供商提供
keytool -importcert -alias root -file root -keystore bloggerflare.jks
  • 进口中间证书
keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks

注意:如果不导入根目录和中间目录, 则无法将域证书导入密钥库。如果你有多个中间体, 则必须全部导入。

  • 导入域证书
keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare

并且, 你将收到确认已安装的确认。

证书回复已安装在密钥库中

太好了, 因此证书密钥库现已准备就绪。让我们继续下一步。

如果你不熟悉SSL, 并且想了解更多信息, 请注册此在线课程– SSL/TLS操作。

在Tomcat中启用SSL

假设你仍然登录到Tomcat服务器, 请转到conf文件夹

  • 备份server.xml文件
  • 转到<连接器端口=” 8080″协议=” HTTP / 1.1″部分并添加一行
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
  • 不要忘记使用你的密钥库文件名和密码进行更改
  • 重新启动tomcat, 你应该看到可以通过HTTPS访问Tomcat
如何在Apache Tomcat中实现SSL?2

甜!

标准HTTPS端口

为什么?

好吧, 如果你看上面的屏幕截图, 我正在通过8080通过https访问Tomcat, 这是非标准的, 还有更多原因。

  • 你不想让用户使用自定义端口
  • 浏览器将发出警告, 因为证书是在没有端口的域名上颁发的

因此, 想法是让Tomcat在443端口上侦听, 以便可以通过https://访问而无需端口号。

为此, 请使用你喜欢的编辑器编辑server.xml

  • 转到<连接器端口=” 8080″
  • 将端口从8080更改为443
  • 它应该看起来像这样
<Connector port="443" protocol="HTTP/1.1"
connectionTimeout="20000"
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
redirectPort="8443" />
  • 重新启动Tomcat并使用没有任何端口号的https访问你的应用程序
如何在Apache Tomcat中实现SSL?4

令人印象深刻, 这是成功!

SSL/TLS漏洞测试

最后, 我们将进行测试, 以确保它不受在线威胁的影响。

我在这里讨论了许多在线工具, 在这里我将使用SSL Labs。

  • 转到SSL实验室并输入URL以开始测试
如何在Apache Tomcat中实现SSL?6

而且是绿色-评级。

但是, 向下滚动报告并查看是否发现任何漏洞并进行修复始终是一个好主意。

今天就这些。

我希望这可以帮助你了解使用SSL/TLS证书保护Tomcat的过程。如果你有兴趣学习更多, 那么我强烈建议你学习本课程。

赞(0)
未经允许不得转载:srcmini » 如何在Apache Tomcat中实现SSL?

评论 抢沙发

评论前必须登录!