搜索词>>tomcat 耗时0.0040
  • tomcat如何配置SSL或者说HTTPS

    tomcat如何配置SSL或者说HTTPS,tomcat,https,SSL<h2>一、SSL是什么?HTTPS是什么?为何需要使用SSL</h2>   安全套接字层(SSL)是一种安全传输协议,用于在Internet上使用加密方法进行通信。SSL协议的主要目的是保证没有人能够篡改浏览器和web应用程序部署的服务器之间的通信。安全通信的另一个目的是根据SSL信息对服务器及其所有者进行身份验证,这样用户就可以确定正在访问的服务器是它正在访问的服务器。在常见的SSL场景中,当用户第一次访问web服务器时,服务器将其SSL证书或公钥发送给客户机。SSL证书包含关于服务器的信息,它的所有者、公司和它的有效期。如果用户不相信证书的真实性,就可以拒绝证书,从而有效地终止连接。如果用户接受该证书,证书本身就存储在浏览器中,并用于启动与发布服务器的安全连接。<br /> <br />    HTTP协议上的SSL协议通信称为HTTPS(安全HTTP)。例如,使用SSL加密连接的web站点在浏览器的地址栏中显示https作为协议名称。称为证书颁发机构(CA)的组织可以对SSL证书的详细信息进行身份验证,因此,如果用户信任CA,他们可以确保安全的web站点得到了认证,并且其详细信息是正确的。有许多ca可以颁发经过认证的SSL证书。现代浏览器自动识别最大和最知名的ca,并允许连接到提供这些组织认证的SSL证书的站点。如果SSL证书不是由CA认证的,或者由CA认证,但是没有被用户的浏览器识别,那么用户将会出现一个警告屏幕,在那里他或她可以决定是否信任该证书。 <p>tomcat配置SSL步骤包含</p> <p>1)生成密钥存储库</p> <p>2)在server.xml中更新连接器</p> <p>3)更新应用程序的web。xml与安全的网址<br />  </p> <h2>二、生成密钥对</h2>   SSL证书是JKS文件。JKS的格式代表Java密钥库,这是一个特定于Java的密钥存储库格式。JKS密钥库可以使用keytool实用程序创建和操作,从版本1.4发布它作为Java SDK的一部分。我们将使用Keytool创建一个自签名的SSL证书,它位于javahome/bin/目录中。 <pre> <code>//GOTO JAVA HOME c:\ > cd %JAVA_HOME%/bin //TYPE GENKEY COMMAND C:\BAML\DFCCUI\installs\jdk1.6\bin>keytool -genkey -alias tomcat -keyalg RSA Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: lokesh What is the name of your organizational unit? [Unknown]: boa What is the name of your organization? [Unknown]: boa What is the name of your City or Locality? [Unknown]: delhi What is the name of your State or Province? [Unknown]: delhi What is the two-letter country code for this unit? [Unknown]: 91 Is CN=lokesh, OU=boa, O=boa, L=delhi, ST=delhi, C=91 correct? [no]: yes Enter key password for <tomcat> (RETURN if same as keystore password): Re-enter new password: C:\installs\jdk1.6\bin></code></pre> 将会创建一个<code>.keystore</code> 文件在你的用户主目录中. 在windows 7系统中, 存放位置 <code>C:\Users\lokesh</code>.<br /> <em>也可以通过参数-keystore d:/leadsec指定创建的文件存放路径</em> <pre> <code>keytool -genkey -alias tomcat -keyalg RSA -keystore d:/mySSLKeystore</code></pre> <br /> <strong>提示:</strong><em>您只能为一个IP地址提供一个SSL证书。如果您在同一个IP上驻留多个域,那么只有一个主机名可以有一个与它的域名匹配的有效的SSL证书。如果您尝试在同一IP上使用SSL,那么浏览器将显示一个警告,即域名与证书不匹配。这是一个已知的SSL限制,因为SSL协议握手必须在从HTTP请求中提取主机名之前发生。</em> <h2>三、更新server.xml配置文件中的Connector</h2> <br /> Tomcat 能够使用两种 SSL 实现: <ul> <li>JSSE 实现,它是Java 运行时(从 1.4 版本起)的一部分。</li> <li>APR 实现,默认使用 OpenSSL 引擎。</li> </ul> 3.1JSSE 实现,它是Java 运行时(从 1.4 版本起)的一部分。 <p>打开你的tomcat安装位置,进入conf目录。在这个目录中你可以找到server.xml配置文件。打开这个配置文件并且找到下面的声明:<br />  </p> <pre> <code class="language-xml"><!-- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> --></code></pre> 修改这个信息,取消注释。并且配置刚才生成的密码和秘钥的路径。 <pre> <code class="language-xml"><Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="false" maxThreads="25" port="8443" keystoreFile="C:/Users/lokesh/.keystore" keystorePass="password" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS" /> </code></pre> 完成之后看看应用的变化。<br /> 配置ssl后需要将之前的8080注释掉 <pre> <code class="language-xml"> <!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --></code></pre> <br /> <br /> 访问https的地址为:http://ip:8443/projectname<br /> <strong><span style="color:#cc0000">注意:</span>直接输入ip:8443/projectname浏览器会默认http协议,必须手动输入https://</strong><br /> <br /> 3.2APR 实现,默认使用 OpenSSL 引擎。<br /> 指定 APR 连接器(APR 库必须可用),则使用: <pre> <code class="language-xml"><!-- Define a HTTP/1.1 Connector on port 8443, APR implementation --> <Connector protocol="org.apache.coyote.http11.Http11AprProtocol" port="8443" .../></code></pre> 如果使用 APR,则会出现一个选项,从而可以配置另一种 OpenSSL 引擎。 <pre> <code class="language-xml"><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="someengine" SSLRandomSeed="somedevice" /></code></pre> 默认值为: <pre> <code class="language-xml"><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" SSLRandomSeed="builtin" /></code></pre> 所以要想使用 APR 实现,一定要确保 <code>SSLEngine</code> 属性值不能为 <code>off</code>。该属性值默认为 <code>on</code>,如果指定的是其他值,它也会成为一个有效的引擎名称。<br /> 最后一步是在 <code>$CATALINA_BASE/conf/server.xml</code> 中配置连接器,<code>$CATALINA_BASE</code> 表示的是 Tomcat 实例的基本目录。Tomcat 安装的默认 <code>server.xml</code> 文件中包含一个用于 SSL 连接器的 <code><Connector></code> 元素的范例。APR 连接器会使用很多不同的属性来设置 SSL,特别是密钥和证书。 APR 配置范例如下: <pre> <code class="language-xml"><!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --> <Connector protocol="org.apache.coyote.http11.Http11AprProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" SSLCertificateFile="/usr/local/ssl/server.crt" SSLCertificateKeyFile="/usr/local/ssl/server.pem" SSLVerifyClient="optional" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/></code></pre>   <h2>四、修改应用中的web.xml配置文件使用安全URL</h2> 修改你的应用中的web.xml配置文件,如下: <pre> <code class="language-xml"><security-constraint> <web-resource-collection> <web-resource-name>application-one</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint></code></pre> <p>url模式被设置为/*因此,来自您的应用程序的任何页面/资源都是安全的(只能通过https访问)。传输保证标签被设置为机密,以确保你的应用能在SSL上运行。</p> <p>现在尝试访问该应用程序使用 <code>https://localhost:8443/application-one/</code>.这将在浏览器中显示证书信息。<br /> <img alt="证书" class="img-thumbnail" src="/assist/images/blog/9fc81441a2824b80a825bf843945352a.png" /><br /> 只有在您接受证书之后,它才会显示页面。<br /> <img alt="页面" class="img-thumbnail" src="/assist/images/blog/a92a483bfa3b46118c89af60a7af3f84.png" /><br /> 如果你没有在网络上设置“安全限制”。xml然后你将能够访问您的应用程序直接使用http://localhost:8080/application-one/.<br /> <img alt="未使用安全" class="img-thumbnail" src="/assist/images/blog/92ab402b9e65482dba2e943cfc75b226.png" /><br /> 这就是关于在tomcat服务器中实现SSL支持的简单而又重要的概念<br />  </p> <h2>五.使用场景</h2>   一定要注意的是,通常只有当 Tomcat 是独立运行的 Web 服务器时,才有必要去配置 Tomcat 以便利用加密套接字。具体细节可参看 <a href="http://tomcat.apache.org/tomcat-8.0-doc/security-howto.html" rel="external nofollow" target="_blank">Security Considerations Document</a>。当 Tomcat 以 Servlet/JSP 容器的形式在其他 Web 服务器(比如 Apache 或 Microsoft IIS)背后运行时,通常需要配置的是主 Web 服务器,用主服务器来处理与用户的 SSL 连接。主服务器一般会利用所有的 SSL 相关功能,将任何只有 Tomcat 才能处理的请求进行解密后再传给 Tomcat。同样,Tomcat 会返回明文形式的响应,这些响应在被传输到用户浏览器之前会被主服务器进行加密处理。在这种情境下,Tomcat 知道主服务器与客户端的所有通信都是通过安全连接进行的(因为应用要求),但 Tomcat 自身无法参与到加密与解密的过程中。 <h2>六.证书支持类型</h2> <p>  Tomcat 目前只能操作 <code>JKS</code>、<code>PKCS11</code>、<code>PKCS12</code> 格式的密钥存储库。<code>JKS</code> 是 Java 标准的“Java 密钥存储库”格式,是通过 <code>keytool</code> 命令行工具创建的。该工具包含在 JDK 中。<code>PKCS12</code> 格式一种互联网标准,可以通过 OpenSSL 和 Microsoft 的 Key-Manager 来。</p> <p>密钥存储库中的每一项都通过一个别名字符串来标识。尽管许多密码存储库实现都在处理别名时不区分大小写,但区分大小写的实现也是允许的。比如,<code>PKCS11</code> 规范需要别名是区分大小写的。为了避免别名大小写敏感的问题,不建议使用只有大小写不同的别名。</p> <p>为了将现有的证书导入 <code>JKS</code> 密码存储库,请查阅关于 <code>keytool</code> 的相关文档(位于 JDK 文档包里)。注意,OpenSSL 经常会在密码前加上易于理解的注释,但 <code>keytool</code> 并不支持这一点。所以如果证书里的密码数据前面有注释的话,在利用 <code>keytool</code> 导入证书前,一定要清除它们。</p> <p>要想把一个已有的由你自己的 CA 所签名的证书导入使用 OpenSSL 的 <code>PKCS12</code> 密码存储库,应该执行如下命令:</p> <pre> <code>openssl pkcs12 -export -in mycert.crt -inkey mykey.key -out mycert.p12 -name tomcat -CAfile myCA.crt -caname root -chain </code></pre>
  • centos 检查tomcat服务是否在线shell脚本

    该脚本主要用于检查tomcat进程是否在线,如果不在线就启动tomcat服务#!/bin/sh res=`ps -ef|grep /home/xqlee/tomcat/bin/bootstrap.jar |awk '{if($0~"/usr该脚本主要用于检查tomcat进程是否在线,如果不在线就启动tomcat服务#!/bin/sh res=`ps -ef|grep /home/xqlee/tomcat/bin/bootstrap.jar |awk '{if($0~"/usr/bin/java") print $2}'` echo $res if [ -z "$res" ]; then cd /home/xqlee/tomcat/bin/ && ./startup.sh fi 简单说明:首先是通过ps命令获取到tomcat名称相关的进程信息然后通过awk命令来截取tomcat服务的进程号判断进程号是否存在,不存在则启动tomcat服务​​​​​​​
  • nginx代理Tomcat带路径的项目

    nginx代理Tomcat带路径的项目<h2>nginx代理Tomcat带路径的项目</h2> <pre> <code class="language-nginx">location / {                 proxy_pass http://localhost:8080/v1/;                 proxy_set_header    REMOTE-HOST $remote_addr;                 proxy_set_header   Host $host;                  proxy_set_header   X-Real-IP $remote_addr;                  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;                  #root   html;                 #index  index.html;         }         location /v1/ {                 proxy_pass http://localhost:8080/v1/;                 proxy_set_header    REMOTE-HOST $remote_addr;                 proxy_set_header   Host $host;                  proxy_set_header   X-Real-IP $remote_addr;                  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;                  #root   html;                 #index  index.html;         }</code></pre>
  • idea2018配置Tomcat8热部署完整记录

    idea2018配置Tomcat8热部署完整记录    由于初步学习使用idea。所以工具用的还不是很熟。但是热部署这个东西,对于砸门开发人员来说还是非常必要的。经百度了了一下。发现真是写的参差不齐。就连百度经验里面的教程都是不全面的。导致小恼火了一把。特写一篇博客记录完整的配置方式供大家参考。<br />   <p>步骤一:添加Tomcat到idea中<br /> <img alt="添加Tomcat" class="img-thumbnail" src="/assist/images/blog/bbce7b32569f4b0580e5eef5ca5e8ef4.png" /><br /> <br /> <img alt="添加Tomcat" class="img-thumbnail" src="/assist/images/blog/48c1af1146d8474dbf456bb7d9aec17c.png" /><br /> <br /> 上图的+ -号就是添加和删除Tomcat。<br /> <br /> 步骤二:项目中Tomcat的配置<br /> <br /> 点击idea的右上角编辑配置<br /> <img alt="项目中的配置" class="img-thumbnail" src="/assist/images/blog/8c6349b680d140d78477cff1107cb80d.png" /><br /> <br /> 选择Tomcat服务器(初次则这里点击上面的+号添加Tomcat服务器),然后选择Deployment.下方有+/-号添加项目。</p> <blockquote> <p>注意添加的项目会有两个选择一个是war结尾的一个是war exploded的。选择exploded的这个非常重要。选择不对则后面无法配置</p> </blockquote> <p><br /> <img alt="添加项目包到Tomcat中" class="img-thumbnail" src="/assist/images/blog/67233e76fc504d5c9f3957d4b5a7a104.png" /><br /> <br /> <br /> 配置资源热部署<br /> <br /> 在On Update action和on frame deactivation两个配置中选择update class and resources完成配置。如果这里没看到update class and resources配置项。则检查上一步的项目部署包是否选择正确<br /> <img alt="配置资源热部署" class="img-thumbnail" src="/assist/images/blog/b650aa09dbbe4d7ca8bfd15a11eeb0f6.png" /><br /> <br /> <br /> 好啦。完整的idea2018配置Tomcat8 热部署完成。<br />  </p>
  • tomcat 启动报错invalid LOC header (bad signature)

    该文章讲解maven项目的tomcat 启动报错invalid LOC header (bad signature)排查方法tomcat 启动报错invalid LOC header (bad signature)<br /> 错误的原因是依赖包中有jar文件签名出错了,解决办法就是删除了重新下载一个。<br /> <br /> 但是那么多依赖,到底是哪个报错的呢?<br /> 解决:<br /> 运行maven test,查看运行的警告和错误日志信息.
  • tomcat6/7/8配置启用gzip压缩页面内容

    tomcat6/7/8配置启用gzip压缩页面内容tomcat6/7/8配置启用gzip压缩页面内容<br /> <br /> 首先找到tomcat的配置文件 <pre> <code>tomcat/conf</code></pre> 编辑该目录下面的server.xml<br /> tomcat Connector默认配置项 <pre> <code class="language-xml"><Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/></code></pre> 修改配置启用tomcat的gzip压缩 <pre> <code class="language-xml"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" compression="on" compressionMinSize="50" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" /></code></pre> 参数说明 <pre> <code>compression="on" --启用gizp compressionMinSize --开始压缩的最小值,单位是byte,如2048表示2K大小 compressableMimeType --需要压缩文件的类型,text/html,text/xml,text/javascript,text/css,text/plain</code></pre> 浏览器F12打开调试模式查看相应头,已经启用gzip了<br /> <img alt="gzip配置启用" class="img-thumbnail" src="/assist/images/blog/46b7926f-d071-4d3f-ad03-1a0abe6d08d8.png" style="height:597px; width:897px" /><br />  
  • Spring Boot logback tomcat部署不生效问题解决

    Spring Boot logback tomcat部署不生效问题解决Spring Boot logback tomcat部署不生效问题解决
  • spring boot maven项目打war包再部署到外部tomcat中

    spring boot项目打war包再部署到外部tomcat中<h2>一.情况说明</h2> 大多数情况下我们开发的项目需要部署到外部的tomcat中,而并非spring boot默认的jar方式部署,这个时候就需要修改和新增一些配置 <h2>二.spring boot项目war打包具体操作</h2> 2.1修改pom.xml文件 <ul> <li>将<packaging>jar</packaging>修改为<packaging>war</packaging></li> <li>在<dependencies>节点中添加</li> </ul> <pre> <code class="language-xml"><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency></code></pre> <br /> 2.2创建tomcat需要的一个servlet启动类<br /> <br /> 我一般喜欢创建在spring boot启动类的同级目录<br /> <strong>ServletInitializer.java</strong> <pre> <code class="language-java">import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(CyinterfaceApplication.class); } } </code></pre> <strong><span style="color:#ff0000">Tips</span>:CyinterfaceApplication即spring boot默认的启动类</strong> <h2>三.使用maven打包项目</h2> 由于我直接使用的eclipse集成的maven插件,使用方法如下:<br /> <br /> <img alt="打包" class="img-thumbnail" src="/assist/images/blog/df4fa9c18113451082e8f809bac9fba9.png" /><br /> <br /> maven打包后在target目录查看:<br /> <img alt="查看war包" class="img-thumbnail" src="/assist/images/blog/f2e0549b4f534b4ba362d49d6357a231.png" />​​​​​​​
  • Spring Boot 2.x HikariCP使用详解

    本文将介绍Spring Boot和HikariCP示例。HikariCP是快速,简单,可靠和生产就绪的JDBC连接池。在Spring Boot 2.0版本中,默认数据库池技术已从Tomcat Pool切换到HikariCP。一、导语    本文将介绍Spring Boot和HikariCP示例。HikariCP是快速,简单,可靠和生产就绪的JDBC连接池。在Spring Boot 2.0版本中,默认数据库池技术已从Tomcat Pool切换到HikariCP。这是因为HikariCP提供了卓越的性能。现在自Spring Boot 2.0发布以来,spring-boot-starter-jdbc和spring-boot-starter-data-jpa默认解析HikariCP依赖,spring.datasource.type属性将HikariDataSource作为默认值。Spring引导首先选择HikariCP然后是Tomcat池,然后根据可用性选择Commons DBCP2。在这个页面上,我们将提供带有Spring Boot Data和MySQL的HikariCP的完整示例。我们将创建一个演示应用程序,我们将在其中执行数据库中的创建和读取操作。我们将配置HikariCP属性,例如文件中的connectionTimeout,minimumIdle,maximumPoolSize,idleTimeout,maxLifetime和autoCommit application.properties。​​​​​​​
  • Invalid icc profile: duplicate sequence numbers

    java 处理图像报错:javax.imageio.IIOException: Invalid icc profile: duplicate sequence numbers运行环境jre 1.8tomcat 8.0通过浏览国外的帖子,找到java 处理图像报错:javax.imageio.IIOException: Invalid icc profile: duplicate sequence numbers运行环境jre 1.8tomcat 8.0通过浏览国外的帖子,找到了大概原因:JPEG文件中的ICC_PROFILE段包含重复的序列号。编写它的软件以某种方式被破坏。但是,图像数据仍然应该是可读的,即使颜色可能看起来不完全正确(常规的图片查看软件没看不出区别)。解决办法就是加入以下依赖:<dependency> <groupId>com.twelvemonkeys.imageio</groupId> <artifactId>imageio-jpeg</artifactId> <version>3.4.1</version> </dependency> 加入以上依赖,并且无需修改任何之前的代码。相关参考:https://stackoverflow.com/questions/32023809/javax-imageio-iioexception-invalid-icc-profile-duplicate-sequence-numbershttps://github.com/haraldk/TwelveMonkeyshttps://search.maven.org/artifact/com.twelvemonkeys.imageio/imageio-jpeg/3.4.1/jar