注意:Tomcat 根目录为 webapps/ROOT/
默认全局启用SSL
1 2 3 4 5 6 7 8 9 10 |
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="8000" redirectPort="8443" URIEncoding="UTF-8" userBodyEncodingForURI="true" relaxedQueryChars="[]|{}^\`"<>" /> #全局启用配置证书 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/etc/ssl/fanruan.china-kedu.com.pfx" keystoreType="PKCS12" keystorePass="49anctux" clientAuth="false" sslProtocol="TLS" />--> |
1 2 3 4 5 6 7 |
还可以把 pfx 证书 转 jks 证书 , 需要注意的是 jks 证书不能加 keystoreType=”PKCS12″ 具体的转换方式如下: 1、把你的 pfx 证书 放到 jdk 的 bin 目录下 ,然后在bin 目录文件夹上 直接cmd进入 bin 目录 2、输入 keytool -importkeystore -srckeystore you.pfx -srcstoretype pkcs12 -destkeystore new.jks -deststoretype JKS you.pfx 你的 pfx 证书 new.jks 要转成的 证书 输入证书密码 转换成功 |
1 |
编辑Tomcat的server.xml文件 |
配置 多域名 虚拟主机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="www.a.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/web/a" path="/" reloadable="flase" /> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> <Host name="www.b.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="项目位置" path="/" reloadable="flase" /> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> |
配置多域名各自证书:tomcat SSLHostConfig

1 2 3 4 |
Tomcat的SSLHostConfig是用于配置Tomcat支持SSL/TLS的组件。 通过在Tomcat的server.xml文件中配置SSLHostConfig,可以设置Tomcat运行时的SSL/TLS连接属性,包括密码和密钥库的位置、密码等。 以下是一个示例的Tomcat配置文件中包含的SSLHostConfig代码段: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<!--我这里启用了线程池--> <Connector port="8443" executor="tomcatThreadPool" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" connectionTimeout="20000" maxParameterCount="1000" enableLookups="false" maxPostSize="10485760" URIEncoding="UTF-8" acceptCount="100" acceptorThreadCount="2" disableUploadTimeout="true" maxConnections="10000" scheme="https" secure="true" > <SSLHostConfig> <Certificate certificateKeystoreFile="/etc/ssl/www.test.com.jks" certificateKeystorePassword="123456" type="RSA" /> </SSLHostConfig> <SSLHostConfig> <Certificate certificateKeystoreFile="/etc/ssl/www.test.com.jks" certificateKeystorePassword="123456" type="RSA" /> </SSLHostConfig> </Connector> 在此处举例,便于理解,解析其中参数: "port":为监听的端口,这里指HTTPS的端口443; "maxThreads":最大线程数; "scheme":协议,这里指的是https协议; "secure":安全的传输协议,设置为true后,就可以使用https协议了; "SSLEnabled":开启SSL支持; "keystoreFile":证书文件的位置; "keystorePass":证书密码; "clientAuth":是否需要客户端验证; "sslProtocol":协议,这里指TLS协议。 "defaultSSLHostConfigName": "wwww.test.a.com" <!--默认域名证书--> "executor"="tomcatThreadPool" <!--启用了线程池--> SSLHostConfig: "SSLProtocol"="TLSv1+TLSv1.1+TLSv1.2" "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"/> "keystoreType"="PKCS12" 告诉tomcat 你的证书类型是pfx(jks类型删掉此行) |
1 2 3 4 5 6 7 8 9 10 |
注:上文代码示例中,证书格式为.pfx/jks格式。若证书格式为.crt,需要微调代码,示例如下: <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https"> <SSLHostConfig sslProtocol="TLS"> <Certificate certificateFile="/opt/ssl_file/server.crt" certificateKeyFile="/opt/ssl_file/server.key" certificateChainFile="/opt/ssl_file/root.crt" type="RSA"/> </SSLHostConfig> </Connector> |
配置后重启tomcat即可
Tomcat配置 http自动跳转 https
1 |
注意:在 server.xml中不能写中文注释,不然编译不通过,就很离谱!!! |
1:在 server.xml 文件的 标签内,添加一个新的 以启用重定向。
1 2 3 |
添加以下配置: <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> 这将启用 URL 重写功能。 |
2:在 Tomcat 的 conf 目录中,创建一个名为 rewrite.config 的文件,用于配置重写规则。
1 2 3 4 |
接着在 rewrite.config 文件中,添加以下内容: RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 这段配置表示,如果请求是通过非 HTTPS 发起的,将其重定向到对应的 HTTPS URL。 |
3:保存所有更改,然后重新启动 Tomcat 以应用新配置。
1 |
完成以上步骤后,当客户端通过 HTTP 访问您的 Web 应用程序时,它将被自动重定向到相应的 HTTPS URL |
第二种301跳转方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
1.简介 urlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。适用于任何Web应用服务器(如 Tomcat,jboss,jetty,Resin,Orion等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。 2.下载 下载UrlRewriteFilter wget http://urlrewritefilter.googlecode.com/files/urlrewritefilter-4.0.3.jar 并放入tomcat的 WEB-INF/lib下 3.配置tomcat 编辑WEB-INF/web.xml 在其它servlet mapping前加入 <filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> 4.添加跳转规则 在WEB-INF下新建urlrewite.xml文件,加入跳转规则 <urlrewrite> <rule> <name>seo redirect</name> <condition name="host" operator="notequal">^www.example.com</condition> <condition name="host" operator="notequal">^localhost</condition> <from>^/(.*)</from> <to type="permanent-redirect" last="true">http://www.example.com/$1</to> </rule> </urlrewrite> |
配置host虚拟主机
- 本文固定链接: https://www.yoyoask.com/?p=10861
- 转载请注明: shooter 于 SHOOTER 发表