公司業務發展需要添加https,蘋果在2017年1月1日以后認為https是安全的所以很多網站都進行了升級。蘋果在iOS 9中引入的一項隱私保護功能,屏蔽明文http資源加載,連接必須經過更安全的https。蘋果目前允許開發者暫時關閉ATS,可以繼續使用HTTP連接,但到年底所有官方商店的應用都必須強制性使用ATS。,如果不升級蘋果端是不支持的。
說一下證書,由於http的協議和https的協議不一樣,所以用的端口也不一樣http是80而https是443,而且https協議是由SSL+http協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。目前主流的SSL證書主要分為DV SSL 、 OV SSL 、EV SSL。
DV SSL
DV SSL證書是只驗證網站域名所有權的簡易型(Class 1級)SSL證書,可10分鍾快速頒發,能起到加密傳輸的作用,但無法向用戶證明網站的真實身份。
目前市面上的免費證書都是這個類型的,只是提供了對數據的加密,但是對提供證書的個人和機構的身份不做驗證。
OV SSL
提供加密功能,對申請者做嚴格的身份審核驗證,提供可信身份證明。
和DV SSL的區別在於,OV SSL 提供了對個人或者機構的審核,能確認對方的身份,安全性更高。
所以這部分的證書申請是收費的~
EV SSL
超安=EV=最安全、最嚴格 超安EV SSL證書遵循全球統一的嚴格身份驗證標准,是目前業界安全級別最高的頂級 (Class 4級)SSL證書。
金融證券、銀行、第三方支付、網上商城等,重點強調網站安全、企業可信形象的網站,涉及交易支付、客戶隱私信息和賬號密碼的傳輸。
這部分的驗證要求最高,申請費用也是最貴的。
我個人建議中小型網站選擇DV和OV的證書就可以了,大型的網站選擇EV。要是買證書的話我建議最好到阿里雲上購買,如果不知道在哪里購買直接打客服就好了。
在購買完證書后會有四個文件
(1)生成一個新的文件ssl-bundle.crt,如上圖最后一個文件和第二個文件分別做如下
cat STAR_hqssjt_com.crt <(echo) COMODORSAAddTrustCA.crt > ssl-bundle.crt
生成一個新的文件ssl-bundle.crt
(2)保存新的Key
把這個文件進行改名
mv hqssjt.com.key domain_com.key
(3)生成p12文件
openssl pkcs12 -export -in ssl-bundle.crt -inkey domain_com.key -out domain_com.p12 -name tomcat -password pass:111111
(4)生成tomcat使用的.jks文件
keytool -importkeystore -v -srckeystore domain_com.p12 -srcstoretype pkcs12 -destkeystore domain_com.jks -deststoretype jks -srcstorepass '111111' -deststorepass '111111'
(5)配置tomcat中conf的server.xml文件
在<Connector port=”80” 下面加入如下配置
.......
......./>
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="1800" #這個要和上面一段配置的參數一致
SSLEnabled="true"
scheme="https"
secure="true"
sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="/存放密碼的路勁/domain_com.jks"
keystorePass="111111" />
配置到這里https就配置完成了,訪問的時候要在最前面加上https否則不會自動跳轉至https,如果不加還會和以前一樣是http。以上操作我簡稱是通用模式 ,默認情況下既可以訪問到HTTP,如果需要訪問https必須在請求頭加入https才行,這里就需要和開發人員說一下把接口都換成https,這里很重要,這里就是ios和微信端需要換一下,沒必要所有的開發項目都去換,所有開發都去換這樣工作量會很大的。原因嘛,大家都懂得。
如果老板經理需要所有項目都得是https的話,必須讓所有的開發都的換成https有一個接口不對,都訪問不到,因為下面的配置是要把所有請求流量都走HTTPS,配置下面要考慮清楚啦。
所以這里又會出現一個問題如何讓http自動跳轉至https
(6)配置tomcat使其可以自動跳轉至https,配置conf里的web.xml文件
在最后的字段中找到</login-config>(4688行)和</web-app>中加入如下配置文件
<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>
(7)重啟tomcat
測試訪問 會自動跳轉至https說明配置成功了
(8)遇見問題總結
在(2)(3)最好兩個密碼必須一致,密碼不能設置太簡單上面111111只是示例配置真實環境不可以這樣。
在(5)的時候要寫對路徑和證書名字寫錯的話也是不正確的,這里的密碼也和上面密碼一致。
如果都配置完成了在微信里仍然訪問不到https說明微信端配置的URL錯誤了,如果你是運維那現在就不關你的事情了,應該是前端或是微信開發的問題,讓他們改一下url就好了
這里仍然還是http,所以微信端依然訪問不到頁面,要把這里改成https才行。
這里改完以后記得提醒開發一定要把調用接口的地方改成https,如果不改會造成各種問題
最后驗證
配置https完成。