当前位置:

Windows中的Tomcat服务器安装证书并设置强制https访问

访客 2023-08-17 1065 0

官网参考

阿里云

华为云

Windows中的Tomcat服务器安装证书并设置强制https访问

获取证书

自己生成证书

这边介绍一个生产开发环境证书的方式:使用 Java 提供的工具:keytool

keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "d:\tomcat.keystore" 

Tomcat服务器支持安装PFX格式和JKS两种格式的证书,这里选择安装PFX格式证书。

从阿里/华为获取证书

解压已保存到本地的Tomcat证书文件。

解压后您将看到文件夹中有以下文件:
证书文件(domain_name.pfx)
密码文件(pfx-password.txt)

PFX格式的证书

拷贝证书文件

在Tomcat安装目录的conf目录下,创建 cert 目录,将解压的证书和密码文件拷贝到cert目录下

修改tomcat配置

修改配置文件server.xml(路径:Tomcat安装目录/conf/server.xml)

修改原本的80端口

原来的

<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

修改后的

<Connector port="80"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="443"maxPostSize="-1" />

网址访问的默认端口号是 80 端口,访问时就不需要加8080端口了
HTTPS 的默认端口是 443 端口
redirectPort 是转发端口,修改成 443 后能够实现输入网址后自动启用HTTPS,来自80端口的请求都跳转至443端口

方法一

设置https


在注释的下方增加下面代码

<Connector port="443"protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="1000"acceptCount="1000"SSLEnabled="true"scheme="https"secure="true"clientAuth="false"sslProtocol="TLS" keystoreFile="conf/cert/domain_name.pfx"keystoreType="PKCS12"keystorePass="pfx-password.txt中的密码"ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256" />

方法二

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true"><SSLHostConfig><Certificate certificateKeystoreFile="C:/apache-tomcat-8.5.60/cert/【证书文件(.pfx结尾)】"certificateKeystorePassword="证书文件中的密码"certificateKeystoreType="PKCS12"/></SSLHostConfig></Connector>

使用JKS证书

拷贝证书文件

在Tomcat安装目录的conf目录下,创建 cert 目录,将解压的证书和密码文件拷贝到cert目录下

修改tomcat配置

打开server.xml,添加ssl连接器,在8080端口连接器下面添加如下配置:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"keystoreFile="conf/cert//YourDomain.jks"keystorePass="SSLPass"clientAuth="false" sslProtocol="TLS" />注意:keystoreFile :证书存放目录,可以写绝对路径或Tomcat相对路径;keystorePass:证书私钥密码;

修改HOST配置

    <Engine name="Catalina" defaultHost="localhost">   ## 这里指定的localhost是默认HOST的名称,修改为证书绑定的域名即可<!--For clustering, please take a look at documentation at:/docs/cluster-howto.html  (simple how to)/docs/config/cluster.html (reference documentation) --><!--<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>--><!-- Use the LockOutRealm to prevent attempts to guess user passwordsvia a brute-force attack --><Realm className="org.apache.catalina.realm.LockOutRealm"><!-- This Realm uses the UserDatabase configured in the global JNDIresources under the key "UserDatabase".  Any editsthat are performed against this UserDatabase are immediatelyavailable for use by the Realm.  --><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm><Host name="localhost"  appBase="webapps"  ### 将这里的localhost修改Wie刚才添加解析的域名即可,且必须与证书的通用名称保持一致unpackWARs="true" autoDeploy="true"><!-- SingleSignOn valve, share authentication between web applicationsDocumentation at: /docs/config/valve.html --><!--<Valve className="org.apache.catalina.authenticator.SingleSignOn" />--><!-- Access log processes all example.Documentation at: /docs/config/valve.htmlNote: The pattern used is equivalent to using pattern="common" --><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host>

这里只需要将里两个localhost修改为证书绑定域名即可,也就是是将该域名与此HOST绑定;

开启HTTP强制跳转HTTPS

配置Tomcat安装目录/conf/web.xml文件

找到<welcome-file-list>

在同级下增加下面代码

<login-config>  <!-- Authorization setting for SSL -->  <auth-method>CLIENT-CERT</auth-method>  <realm-name>Client Cert Users-only Area</realm-name>  </login-config>  <security-constraint>  <!-- Authorization setting for SSL -->  <web-resource-collection >  <web-resource-name>SSL</web-resource-name> #请将该参数替换为您的项目名称。<url-pattern>/*</url-pattern>  </web-resource-collection>  <user-data-constraint>  <transport-guarantee>CONFIDENTIAL</transport-guarantee>  </user-data-constraint>  </security-constraint>

其他设置

启用多个服务

你有一个服务,希望通过 域名/music 的方式访问
实现过程

  1. webapps 目录下新建 music 目录,将服务文件放进去
  2. 配置 server.xml

配置内容:
定位到文件末尾,找到如下内容:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" />

在该文件下,新增配置:

<Content path="/music/" docBase="C:\\apache-tomcat-8.5.60\\webapps\\music" reloadable="true" />

参数描述:

  • path: 通过对应网址访问该服务。 (例:https:xxx.com/music)
  • docBase: 提供对应服务的文件所在的绝对路径。
  • reloadable: 自动重载该服务。 (启用后,更改该文件不需要重启Tomcat)

tomcat配置支持ipv6

注意:tomcat6 不支持监听ipv6

想让你的tomcat即可以使用IPV4又可以使用IPV6访问,需要进行如下配置,修改tomcat配置文件\conf\server.xml
只需加上 address="[::]" 即可

<Connector port="8080" protocol="HTTP/1.1"...redirectPort="8443" />修改后的<Connector port="8080" protocol="HTTP/1.1"address="[::]"...redirectPort="8443" />

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~