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

    前任:

    1. [root@geekflare ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks
    2. Enter keystore password:
    3. Re-enter new password:
    4. What is your first and last name?
    5. [Unknown]: bloggerflare.com
    6. What is the name of your organizational unit?
    7. [Unknown]: Blogging
    8. What is the name of your organization?
    9. [Unknown]: Geek Flare
    10. What is the name of your City or Locality?
    11. [Unknown]:
    12. What is the name of your State or Province?
    13. [Unknown]:
    14. What is the two-letter country code for this unit?
    15. [Unknown]:
    16. Is CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Unknown, ST=Unknown, C=Unknown correct?
    17. [no]: yes
    18. Enter key password for
    19. (RETURN if same as keystore password):
    20. [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 文件
    • 转到 部分并添加一行
    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

    • 去 
    • 将端口从 8080 更改为 443
    • 它应该看起来像这样
    1. connectionTimeout="20000"
    2. SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
    3. redirectPort="8443" />
    复制
    • 重新启动 Tomcat 并使用 https 访问您的应用程序,无需任何端口号

    厉害了,成功了!

    SSL/TLS 漏洞测试

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

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

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

    它是绿色的 - 评级

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

    这就是今天的全部内容。

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

  • 相关阅读:
    【C++ Primer Plus学习记录】数组的替代品vector、array
    【腾讯云原生降本增效大讲堂】云原生混部技术标准解读
    LeetCode84:柱形图中最大的矩形
    用户 ‘IIS APPPOOL\‘ 登录失败—3种解决方法
    使用wpf mvvm light sqlsugar 搭建增删改框架
    基于PCA主成分分析的BP神经网络回归预测研究(Matlab代码实现)
    深度学习项目:火灾烟雾监测【附完整源码】
    深入理解JVM - 内存区域介绍(抄录整理)
    Nuxt3 的生命周期和钩子函数(三)
    ProAntd+react+ts表格行点击高亮+表格联动
  • 原文地址:https://blog.csdn.net/allway2/article/details/126571749