前言
現在谷歌等廠商大力推行https協定,如果你的網站不支援https,在使用谷歌浏覽器時,會被警告網站不安全。w(゚Д゚)w,不安全?哪裡不安全了?OK,那我改成支援https好吧。關于http怎麼不安全,https又怎麼安全了,下篇文章再讨論。
一 申請證書
申請阿裡雲免費SSL證書
首先,我們需要去購買一個SSL證書。目前阿裡雲上有免費證書購買,有效期一年。

依次點選完成申請,稽核過後即可在控制台的SSL證書頁面看到自己的證書了。
選擇需要使用的伺服器類型。
二 安裝證書到伺服器
2.1 Tomcat伺服器
如上圖所示,點選對應伺服器類型的幫助按鈕可以檢視Tomcat7的證書安裝方法,但是我使用的是Tomcat8,踩了一些坑,在這裡額外說一下。
- 在Server.xml中可以找到有兩個Connector 端口為8843的注釋, 一種是使用Http11NioProtocol 另一種是Http11AprProtocol , 根據注釋我們使用第一種。
- keystoreFile檔案路徑的配置,如果按照說明裡面的配置,提示找不到檔案。是以可以配置了絕對位址:/etc/apache-tomcat-8.5.15/cert/xxxx.pfx。
- tomcat8 配置ssl的方式是有所改變的,多了SSLHostConfig、Certificate标簽,是以百度上的配置大部分都是不适用的,tomcat啟動是會報錯。這裡附上官網文檔,感興趣可以自行檢視:https://tomcat.apache.org/tomcat-8.5-doc/config/http.html。
基本配置完成後如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="D:/apache-tomcat-8.5.15/cert/xxx.pfx"
certificateKeystoreType="PKCS12" certificateKeystorePassword="填寫密碼" />
</SSLHostConfig>
</Connector>
2.2 Nginx代理
最近我給自己的伺服器添加了Nginx代理,是以學習了下Nginx配置Https。如果使用了Nginx來作為網站入口,那麼Tomcat就不必配置SSL證書了。直接配置Nginx的SSL證書即可。
修改Nginx配置檔案nginx.conf,将原本的http配置全删掉,直接改成重定向到https即可。(除非你想要http和https都支援)
如下:
server {
listen 80;
server_name erictao2.com www.erictao2.com;
rewrite ^ https://$http_host$request_uri? permanent;
}
添加一段配置
rewrite ^ https://$http_host$request_uri? permanent;
即可重定向到https。
然後再新增一個server配置:
server {
listen 443 ssl;
server_name erictao2.com www.erictao2.com;
ssl_certificate /etc/nginx/cert/1157188_erictao2.com.pem;
ssl_certificate_key /etc/nginx/cert/1157188_erictao2.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
if ($host != 'www.erictao2.com'){
rewrite ^/(.*)$ www.erictao2.com/$1 permanent;
}
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:8080/;
}
}
将其中的
ssl_certificate
和
ssl_certificate_key
改成自己對應的檔案即可。然後重載Nginx配置,輸入指令
nginx -s reload
。
完成以上步驟後,再次通路自己的網站就能看到url上多了https,谷歌浏覽器也承認你的網站是安全網站了。