配置主要分为两步:

一:用JDK自带的keytool.exe来生成私有密钥和自签发的证书

操作案例:

1.https
keytool -v -genkey -alias tomcat -keyalg RSA -keystore e:/tomcat.keystore
密码:
XXXXX
姓名:
xxxx
组织单位名称
xxxx
组织名称
xxxxx
区域名称
hangzhou
省份
zhejiang
国家
ch
按如上步骤操作后就得到了tomcat.keystore文件。

以下是生成keystore的bat问题件脚本
@echo off
set PATH=%CD%
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_45
set USER=pure
set PASSWORD=pure123
set FILENAME=pure_erp
set REQ_PATH=172.16.10.68
set YXQ=36500
cd  %JAVA_HOME%/bin
echo 进行生成HTTPS请求密钥
echo 用户名: %USER%  密码: %PASSWORD% 
keytool -genkey -alias %FILENAME% -keyalg RSA -keystore %PATH%/%FILENAME%.keystore -dname "CN=%REQ_PATH%, OU=%USER%, O=%USER%, L=%USER%, ST=CN, C=CN" -keypass %PASSWORD% -storepass %PASSWORD%  -validity %YXQ%
echo 正在生成密钥文件【%FILENAME%.keystore】,请稍后……
pause
echo 正在生成客户端证书文件【%FILENAME%.cer】,请稍后……
keytool -export -alias %FILENAME% -keystore %PATH%/%FILENAME%.keystore -file %PATH%\%FILENAME%.cer -storepass %PASSWORD%
pause
bat说明
1.打开密钥生成工具,将里面的JAVA_HOME 改成你的jdk的物理地址
2.然后里面的USER、PASSWORD、FILENAME、命名你想要的,然后将REQ_PATH设置为当前部署的IP
  YXQ 填这个证书有效的时间 如:36500就是10年

把生成的keystore文件放到tomcat根目录


二:配置tomcat
将servlet.xml一下的的注释打开(最好拷贝此段) 
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->   
<Connector protocol="org.apache.coyote.http11.Http11Protocol"     
                     port="8443" maxHttpHeaderSize="8192"   
           maxThreads="1024" minSpareThreads="256" maxSpareThreads="512"   
           enableLookups="false" disableUploadTimeout="true"   
           acceptCount="2048" scheme="https" secure="true"   
           clientAuth="false" sslProtocol="TLS"                    
           keystoreFile="/server.keystore"     
           keystorePass="changeit"/>  


到这一步访问https://ip:8443/ 

有一个疑问  这个时候用https://ip:8443访问正常但是用http://ip:8443的话会下载一个文件,这是什么原理,不应http://ip:8443直接报错的嘛。

==========================================================================================

一般Tomcat默认的SSL端口号是8443,但是对于SSL标准端口号是443,这样在访问网页的时候,直接使用https而不需要输入端口号就可以访问,如https://ip/ 
想要修改端口号,需要修改Tomcat的server.xml文件: 
1.non-SSL HTTP/1.1 Connector定义的地方,一般如下: 
     
<Connector port="80" URIEncoding="UTF-8" maxHttpHeaderSize="8192"  protocol="org.apache.coyote.http11.Http11NioProtocol"
                maxThreads="1024" minSpareThreads="256" maxSpareThreads="512" 
                enableLookups="false" redirectPort="443" acceptCount="2048" 
                connectionTimeout="20000" disableUploadTimeout="true" />




将其中的redirectPort端口号改为:443 
2.SSL HTTP/1.1 Connector定义的地方,修改端口号为:443,如下: 
	 <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" maxHttpHeaderSize="8192"
               maxThreads="1024" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="/pure_erp.keystore" keystorePass="pure123" />
3.AJP 1.3 Connector定义的地方,修改redirectPort为443,如下: 
     
<Connector port="8009" 
                enableLookups="false" redirectPort="443" protocol="AJP/1.3" /> 
重新启动Tomcat就可以了。到这一步可以形成访问方式 https://ip/ 

4、强制https访问

方法一:通过web.xml配置重定向的方式

  在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> 

注意:(如果对方使用的机器端口被占用)

需要切换端口来转换数据:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080





浏览 721 评论 0 赞 0 砸 0 标签: tomcat 加密
评论
还可以再输入500个字

请您注意

·自觉遵守:爱国、守法、自律、真实、文明的原则
·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规
·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·您在NoteShare上发表的作品,NoteShare有权在网站内保留、转载、引用或者删除
·参与本评论即表明您已经阅读并接受上述条款