Tomcat配置成https方式访问(单向认证)
?????????? maxThreads="150" minSpareThreads="25" maxSpareThreads="75"??
?????????? enableLookups="false" disableUploadTimeout="true"??
?????????? acceptCount="100" scheme="https" secure="true"??
?????????? clientAuth="false" sslProtocol="TLS"???????????????????
?????????? keystoreFile="server.keystore"????
?????????? keystorePass="changeit"/>?
到这一步访问https;//ip:8443/item
一般Tomcat默认的SSL端口号是8443,但是对于SSL标准端口号是443,这样在访问网页的时候,直接使用https而不需要输入端口号就可以访问,如https://loalhost/webserver
想要修改端口号,需要修改Tomcat的server.xml文件:
1.non-SSL HTTP/1.1 Connector定义的地方,一般如下:
???? <Connector port="80" maxHttpHeaderSize="8192"
??????????????? maxThreads="500" minSpareThreads="25" maxSpareThreads="75"
??????????????? enableLookups="false" redirectPort="443" acceptCount="100"
??????????????? connectionTimeout="20000" disableUploadTimeout="true" />
将其中的redirectPort端口号改为:443
2.SSL HTTP/1.1 Connector定义的地方,修改端口号为:443,如下:
<Connector????
?? port="443" maxHttpHeaderSize="8192"
?? maxThreads="150" minSpareThreads="25"
?? maxSpareThreads="75"
?? enableLookups="false"
?? disableUploadTimeout="true"
?? acceptCount="100" scheme="https"
?? secure="true"
?? clientAuth="false" sslProtocol="TLS"
?? keystoreFile="conf/tomcat.keystore"
?? keystorePass="123456" />
3.AJP 1.3 Connector定义的地方,修改redirectPort为443,如下:
???? <Connector port="8009"
??????????????? enableLookups="false" redirectPort="443" protocol="AJP/1.3" />
重新启动Tomcat就可以了。到这一步可以形成访问方式 http://ip/item
到tomcat下面的webapps下面的ROOT下面的index.jsp文件的内容
<?xml version="1.0" encoding="ISO-8859-1"?>
? <%response.sendRedirect("/item");%>
修改web.xml文件的内容
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??? xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
??? version="2.4">
? <display-name>Welcome to Tomcat</display-name>
? <description>
???? Welcome to Tomcat
? </description>
? <welcome-file-list>
?? <welcome-file>/index.jsp</welcome-file>
? </welcome-file-list>
</web-app>
删除lib目录下的lib文件
重启Tomcat服务器,在这一步可以直接通过https:ip来访问项目
?
(附录:)tomcat的配置文件SSL部分详细说明配置文件server.xml,SSL部分:
- ?

- ??? <!-- A "Connector" represents an endpoint by which requests are received???????? and responses are returned. Documentation at :???????? Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)???????? Java AJP? Connector: /docs/config/ajp.html???????? APR (HTTP/AJP) Connector: /docs/apr.html???????? Define a non-SSL HTTP/1.1 Connector on port 8080??? --> <Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D:/Tomcat/conf/tomcatKey.keystore" keystorePass="changeit" algorithm="SunX509" />
?
属性说明:
?port:???? 这个port属性(默认值是8443)是 TCP/IP端口数码,Tomcat在其上监听安全连接。你可以把它更改成任何你愿意要的数值(如默认的https通信,数目是443)。不过,在许多操作系统中,要想在比1024小的端口数码上运行Tomcat,需要特殊的设置(它超出了这个文档资料的范围)。
?
redirectPort:?如果你在这里更改端口数值,你还必须更改在non-SSL连接器上的redirectPort 这个属性特定的值。这允许Tomcat自动地redirect那些试图访问有安全限制页面的用户,指明根据 Servlet 2.4 Specification要求,SSL是必需的
?
clientAuth:?如果你想要Tomcat要求所有的SSL客户在使用这个socket时出示用户认证书,把这个值设定为 true 。如果你想要Tomcat要求出示用户认证书,但是如果没有认证书也可以, 就把这个值设定为want 。
?
keystoreFile:?如果你产生的keystore文件不在Tomcat期望的默认地方(一个叫做.keystore 的文件在Tomcat运行的主目录),就添加这个属性。你可以指定一个绝对路径名称, 或者一个由$CATALINA_BASE环境变量而派生的相对路径名称。
?
keystorePass:?如果你使用一个不同的keystore(以及认证书)密码,而不是Tomcat期望的密码 (就是changeit),添加这个元素。
?
keystoreType:?如果使用一个PKCS12 keystore的话,就添加这个element。 有效的值是JKS 和 PKCS12
?
sslProtocol:?要在这个socket上被使用的加密/解密协定。如果你在使用Sun的JVM,我们不提倡更改 这个值。据报道,TLS协定的IBM's 1.4.1 实现与一些通用的浏览器不兼容。 如果是这样,就使用value SSL
?
ciphers:?这个socket允许使用的由逗号分隔开的加密密码列单。默认的情况下,任何可用的密码都允许被使用。
?
algorithm:?可用的X509算法。默认是Sun的实现( SunX509 )。 对于IBM JVMs,你应该使用值 IbmX509。对于其他卖主,查阅JVM文档资料来 找正确的值。
?
truststoreFile:?用来验证用户认证书的TrustStore文件。
?
truststorePass:?访问TrustStore的密码。默认值就是keystorePass的值。
?
truststoreType:?如果你在使用与KeyStore不同格式的TrustStore,添加这个元素。 合法的值是JKS和PKCS12
?
keyAlias:?如果 keystore 里面有多个 key,你可以为用这个选项为加入的 key 起一个名字。 如果没有指定名字,使用时 keystore 内的第一个 key 将会被使用。
