在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端口!!!
這個時候不要急,重啟后服務器還要編譯文件,可能要等個幾分鍾才能訪問你的網站.