我开始使用Apache Tomcat已经快 12 年了。我相信当我做我的一年级项目时,它是在 Tomcat 版本上1.x
。现在它已经在 version 上8.0
。在我的日常工作生活中,我大部分时间都在与 Tomcat Server 保持联系,没有它就活不下去。
在 Crunchify 上,我们已经发表了近 40 篇关于Apache Tomcat
. 在大部分教程中,我在端口 8080 上运行服务器,这是server.xml
文件中配置的默认端口。
在本教程中,我们将详细介绍how to enable HTTPS/SSL on Apache Tomcat Server
.
keytool
:我们将使用keytool
命令生成安全密钥——这是密钥和证书管理工具。
命令:
- bash-3.2$ pwd
- /Users/Shared
- bash-3.2$ keytool -genkey -alias crunchify -keyalg RSA -keystore /Users/Shared/crunchify.keystore
文件将在文件夹下创建/Users/Shared
。
- bash-3.2$ keytool -genkey -alias crunchify -keyalg RSA -keystore /Users/Shared/crunchify.keystore
- Enter keystore password:
- Re-enter new password:
- What is your first and last name?
- [Unknown]: App Shah
- What is the name of your organizational unit?
- [Unknown]: Crunchify, LLC
- What is the name of your organization?
- [Unknown]: Crunchify
- What is the name of your City or Locality?
- [Unknown]: New York City
- What is the name of your State or Province?
- [Unknown]: NY
- What is the two-letter country code for this unit?
- [Unknown]: US
- Is CN=App Shah, OU="Crunchify, LLC", O=Crunchify, L=New York City, ST=NY, C=US correct?
- [no]: yes
- Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 90 days
- for: CN=App Shah, OU="Crunchify, LLC", O=Crunchify, L=New York City, ST=NY, C=US
我正在使用Mac OS X,因此如果您在 Windows 上,请相应地替换您的路径。我用过密码123456
。
- bash-3.2$ keytool -certreq -keyalg RSA -alias crunchify -file crunchify.csr -keystore crunchify.keystore
- Enter keystore password:
输入密码:123456
Start
使用命令的 tomcat 服务器: startup.sh
。
确保您位于正确的 Tomcat 路径位置。
- bash-3.2# pwd
- /Users/Shared/apache-tomcat-9.0.30/bin
- bash-3.2$ ./startup.sh
- Using CATALINA_BASE: /Users/Shared/apache-tomcat-9.0.30
- Using CATALINA_HOME: /Users/Shared/apache-tomcat-9.0.30
- Using CATALINA_TMPDIR: /Users/Shared/apache-tomcat-9.0.30/temp
- Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
- Using CLASSPATH: /Users/Shared/apache-tomcat-9.0.30/bin/bootstrap.jar:/Users/Shared/apache-tomcat-9.0.30/bin/tomcat-juli.jar
- Tomcat started.
点击 URL:http://localhost:8080
以确保服务器已启动并正在运行。
https://localhost:8443
由于我们在上面生成了密钥库和证书签名请求,我们需要告诉 tomcat 使用它。
server.xml
位于/conf/
文件夹中的文件并修改设置。/Users/Shared/apache-tomcat-9.0.30/conf
文件夹。将以下部分直接添加到 server.xml 文件中:
- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
- maxThreads="150" scheme="https" secure="true"
- keystoreFile="/Users/Shared/crunchify.keystore" keystorePass="123456"
- clientAuth="false" sslProtocol="TLS" sslVerifyClient="optional"
- sslEnabledProtocols="TLSv1.2,TLSv1.1,SSLv2Hello"/>
123456
我在Step-1
.
保存存档。接下来我们将停止并启动 Tomcat 服务器。
- bash-3.2$ /Users/Shared/apache-tomcat-9.0.30/bin/shutdown.sh
- Using CATALINA_BASE: /Users/Shared/apache-tomcat-9.0.30
- Using CATALINA_HOME: /Users/Shared/apache-tomcat-9.0.30
- Using CATALINA_TMPDIR: /Users/Shared/apache-tomcat-9.0.30/temp
- Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
- Using CLASSPATH: /Users/Shared/apache-tomcat-9.0.30/bin/bootstrap.jar:/Users/Shared/apache-tomcat-9.0.30/bin/tomcat-juli.jar
- NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
- bash-3.2$ /Users/Shared/apache-tomcat-9.0.30/bin/startup.sh
- Using CATALINA_BASE: /Users/Shared/apache-tomcat-9.0.30
- Using CATALINA_HOME: /Users/Shared/apache-tomcat-9.0.30
- Using CATALINA_TMPDIR: /Users/Shared/apache-tomcat-9.0.30/temp
- Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
- Using CLASSPATH: /Users/Shared/apache-tomcat-9.0.30/bin/bootstrap.jar:/Users/Shared/apache-tomcat-9.0.30/bin/tomcat-juli.jar
- Tomcat started.
现在再次点击 HTTPS 安全 URL 以检查您的页面是否已成功加载。
铬合金:
Chrome Blocks all insecure HTTPS
从加载站点。Chrome flag
为从 localhost 加载的资源加载无效证书chrome://flags/#allow-insecure-localhost
Safari 和 Mozilla 火狐:
Accept invalid certificate error
并访问网站。您应该看到 Apache Tomcat 页面通过 HTTPS 在端口 8443 上加载🙂
你都准备好了。你注意到了red padlock
吗?不用担心。我们没有从 Verisign 或 Comodo 购买 SSL 证书。
在生产环境中,您可能看不到那个红十字标志。
点击浏览器中的证书,我们默认的自签名证书应该是
valid for 90
天数。
如何检查您的cert content
使用命令keytool
?
bash-3.2# keytool -list -keystore /Users//crunchify.keystore
结果:
- bash-3.2$ keytool -list -keystore /Users/Shared/crunchify.keystore
- Enter keystore password:
- Keystore type: PKCS12
- Keystore provider: SUN
- Your keystore contains 1 entry
- crunchify, Apr 24, 2020, PrivateKeyEntry,
- Certificate fingerprint (SHA-256): 9D:26:77:E0:E8:79:5B:46:57:64:04:95:B8:22:9C:E2:9F:A4:82:CB:01:B5:80:62:75:90:48:27:5F:60:CB:C8
- bash-3.2$