如何在 Apache Tomcat 中实现 SSL?

保护 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. 文件名——同样,保留域名是件好事。

前任:

[root@geekflare 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):

[root@geekflare 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 文件
  • 转到 <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 端口

为什么?

好吧,如果你看上面的截图,我正在使用 https 访问超过 8080 的 Tomcat,这不是标准的,还有其他一些原因。

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

所以想法是让 Tomcat 监听 443 端口,这样就可以通过 https:// 访问它,而无需端口号。

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

  • 去 <Connector port="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 访问您的应用程序,无需任何端口号

厉害了,成功了!

SSL/TLS 漏洞测试

最后,我们将进行测试以确保它不易受到在线威胁

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

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

它是绿色的 - 评级

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

这就是今天的全部内容。

我希望这可以帮助您了解使用 SSL/TLS 证书保护 Tomcat 的过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值