在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
上述命令中有两个变量,您可能希望更改这两个变量。
- Alias-最好保持它有意义,这样您将来可以快速识别。我喜欢将其保留为域名。
- 文件名-同样,最好保持域名。
例如:
[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。