本文于2016年3月完成,發(fā)布在個人博客網(wǎng)站上。 考慮個人博客因某種原因無法修復(fù),于是在博客園安家,之前發(fā)布的文章逐步搬遷過來。
nginx的配置方法
可以參考Jerry Qu的本博客 Nginx 配置之完整篇。
Tomcat的配置方法
以Java語言實(shí)現(xiàn)的Connector為例,介紹配置方法。
創(chuàng)建證書
-
Windows下,可以在CMD下執(zhí)行命令
"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA -keystore tomcat.key
-
Unix下,可以在shell下執(zhí)行命令
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.key
keytool提示輸入口令時(shí),輸入changeit
;然后按照要求輸入其它信息,證書信息會生成到tomcat.key
文件中。
注意,這里輸入的口令可以不是changeit
,但具體值需要和Connector配置中的keyPass
,keystorePass
保持一致,否則Tomcat啟動后會報(bào)錯提示無法加載證書文件。
關(guān)于證書,這是一個很大的話題,涉及范圍很廣,而Jackie其實(shí)一直以來并沒有搞的很清楚,所以此處就不獻(xiàn)丑了。
配置Connector
對于Apache Tomcat
的7.0.X版本,修改$CATALINA_BASE/conf/server.xml
中定義的Connector,增加HTTPS通道的定義,樣例如下:
<!-- HTTP通道,跳轉(zhuǎn)至8443端口 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
<!-- HTTPS通道 -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
URIEncoding="UTF-8"
SSLEnabled="true"
secure="true"
scheme="https"
clientAuth="false"
keystoreFile="conf/tomcat.key"
keyPass="changeit"
keystorePass="changeit"
>
</Connector>
對于Apache Tomcat
的9.0.X版本,與7.0.x版本的配置方法稍有不同,但同樣需要修改$CATALINA_BASE/conf/server.xml
中定義的Connector,樣例如下:
<!-- HTTP通道,跳轉(zhuǎn)至8443端口 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
<!-- HTTPS通道 -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
URIEncoding="UTF-8"
SSLEnabled="true"
scheme="https"
secure="true"
>
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/tomcat.key"
certificateValidation="false"
certificateKeyPassword="changeit"
certificateKeystorePassword="changeit"
type="RSA"
/>
</SSLHostConfig>
</Connector>
樣例中配置了明文的口令,顯然并不安全,存在安全上的漏洞。
解決的方法如下:
- 使用安全且可逆的加密算法生成密文;
- 修改tomcat相關(guān)的源碼,使用加密算法還原得到明文,然后使用明文來加載證書。
過程并不復(fù)雜,可以參考tomcat安全配置之證書密碼加密存儲。
配置應(yīng)用
修改應(yīng)用的web.xml文件,增加如下配置
<session-config>
<cookie-config>
<!-- <http-only>true</http-only> --> <!-- 設(shè)置Cookie對瀏覽器加載的腳本不可見,默認(rèn)值為true,因此無需配置 -->
<secure>true</secure> <!-- 設(shè)置Cookie使用HTTPS方式傳遞 -->
</cookie-config>
<session-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/*</url-pattern> <!-- 對于應(yīng)用的所有URL都要求使用HTTPS方式訪問 -->
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
當(dāng)然可以依據(jù)實(shí)際情況調(diào)整樣例中對URL的控制范圍。
官網(wǎng)的參考資料
- Apache Tomcat 7 SSL/TLS Configuration HOW-TO
- Apache Tomcat 7 The HTTP Connector
- Apache Tomcat 9 SSL/TLS Configuration HOW-TO
- Apache Tomcat 9 The HTTP Connector
- The Java EE 6 Tutorial Specifying Security Constraints
關(guān)于HTTPS的閱讀材料
百度的HTTPS實(shí)踐
百度目前已實(shí)現(xiàn)全站啟用HTTPS,來自百度運(yùn)維部主頁的如下文章記錄了百度技術(shù)人員的實(shí)踐經(jīng)驗(yàn),非常值得一讀。文章來源:http://www.zghlxwxcb.cn/news/detail-767521.html
- 全站 https 時(shí)代的號角 : 大型網(wǎng)站的 https 實(shí)踐系列
- 大型網(wǎng)站的 HTTPS 實(shí)踐(1):HTTPS 協(xié)議和原理
- 大型網(wǎng)站的 HTTPS 實(shí)踐(2):HTTPS 對性能的影響
- 大型網(wǎng)站的 HTTPS 實(shí)踐(3):基于協(xié)議和配置的優(yōu)化
- 大型網(wǎng)站的 HTTPS 實(shí)踐(4):協(xié)議層以外的實(shí)踐
Jerry Qu的分享
Jerry Qu的博客是一個好地方,有很多前端的資料,值得拜讀。文章來源地址http://www.zghlxwxcb.cn/news/detail-767521.html
- 關(guān)于啟用 HTTPS 的一些經(jīng)驗(yàn)分享(一)
- 關(guān)于啟用 HTTPS 的一些經(jīng)驗(yàn)分享(二)
- TLS 握手優(yōu)化詳解
其它資料
- HTTPS是如何保證連接安全:每位Web開發(fā)者都應(yīng)知道的,原文
- 圖解HTTPS
- Qualys SSL Labs的SSL Server Test工具
到了這里,關(guān)于Web服務(wù)器啟用HTTPS的配置方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!