在CentOS7中Tomcat部署SSL证书时遇到的问题
1.配置servlet.xml
配置tomcat/conf/server.xml 加入以下代码
<Connector port="8443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="证书路径"
keystoreType="PKCS12"
keystorePass="这里写密码"
clientAuth="false"
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"/>
tomcat非root用户只能使用1024以上的端口,
对1024以下的端口进行设置会报以下错误,如443端口:(没有权限)
Permission denied <null>:443
root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限。
这意味着你的任何一个页面脚本(html/js)都具有root权限,所以可以轻易地用页面脚本 修改整个硬盘里的文件!
所以最好不要使用root启动tomcat。
因为之前配置80端口时也遇到过,所以想到直接转发端口
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
这里有一个小坑 在配置证书pfx 地址的时候路径一定要写对,在conf/servlet.xml 的相对路径下是tomcat的根路径,
并不是conf(这个在tomcat启动后发现无法访问网站,看了日志以后才知道..)
密码直接复制上去就可以了
2.http强转https
在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>
配置强转以后,我发现访问http 的时候给我转发到8443端口上了,导致无法访问https,http端口为如下配置
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="1000"
minSpareThreads="20"
acceptCount="1000"
maxHttpHeaderSize="65536"
debug="0"
disableUploadTimeout="true"
useBodyEncodingForURI="true"
enableLookups="false"
URIEncoding="UTF-8"/>
后来将redirectPort改成如下 就好了,应该就是重定向端口的意思(小白猜测)
redirectPort="443"
3.重启tomcat服务
千万别忘了阿里云的防火墙开启443端口!!!
这个时候不要急,重启后服务器还要编译文件,可能要等个几分钟才能访问你的网站.