在Apache Tomcat中如何实现SSL?

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

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

有许多方法可以实现这一点。

  • 您可以在负载均衡器上终止SSL
  • 在CDN级别实施SSL
  • 在前端使用Apache、Nginx等Web服务器,并在那里实施SSL

然而,如果您没有使用以上任何方法,或者将其用作前端,或者需要直接在Tomcat上部署SSL,那么以下内容将对您有所帮助。

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

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

让我们开始吧…

准备SSL/TLS证书

第一步是生成CSR并让certificate authority签名。我们将使用keytool工具管理证书。

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

上述命令中有两个变量,您可能希望更改这两个变量。

  1. Alias-最好保持它有意义,这样您将来可以快速识别。我喜欢将其保留为域名。
  2. 文件名-同样,最好保持域名。

例如:

[root@yaoweibin 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 
(RETURN if same as keystore password):

[root@yaoweibin ssl]#

注意第一个和最后一个名称问题。我认为这有点误导。这不是您的名字,而是您想要保护的域名。

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

接下来是使用新创建的密钥库生成新的CSR,使用以下命令。

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

这将创建一个CSR,您需要将其发送给证书颁发机构以进行签名。如果您正在进行测试,那么您可以考虑使用a FREE certificate provider,否则选择付费服务。

我得到了签名的证书,并将继续使用以下命令将其导入到密钥库中。

  • 导入由提供者提供的根证书
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 Operations

在Tomcat中启用SSL

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

  • 备份server.xml文件
  • 转到<Connector port="8080" protocol="HTTP/1.1"部分并添加一行
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
  • 不要忘记更改密钥库文件名和密码
  • 重新启动tomcat,您应该看到Tomcat可以通过HTTPS访问

太棒了!

标准的HTTPS端口

为什么?

好吧,如果您看一下上面的截图,我是通过8080上的https访问Tomcat的,这不是标准的,还有一些其他原因。

  • 您不希望要求用户使用自定义端口
  • 浏览器会给出警告,因为证书是在不带端口的域名上发布的

因此,想法是使Tomcat监听443端口,因此可以通过https://访问而不需要端口号。

要这样做,请使用您喜欢的编辑器编辑server.xml

  • 转到<Connector port="8080"
  • 将端口从8080更改为443
  • 它应该如下所示
  • 重新启动Tomcat,并使用https访问您的应用程序,不需要任何端口号

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

SSL/TLS漏洞测试

最后,我们将进行测试,以确保它没有受到vulnerable to online threats

有许多在线工具可供使用,我之前提到的链接_5,这里我将使用SSL Labs。

  • 转到SSL Labs并输入URL开始测试

它是绿色 – A级

但是,最好还是向下滚动报告,查看是否存在任何漏洞并进行修复。

所以,今天就是这些。

我希望这能帮助您了解使用SSL/TLS证书保护Tomcat的过程。如果您对学习更多感兴趣,我强烈推荐这个course

类似文章