您好,登錄后才能下訂單哦!
背景
由于項目需求,安全起見,需要將之前的http接口訪問變成https訪問,所以需要配置SSL證書。項目的架構是這樣的:
基本架構是硬負載(ReadWhere)+ 軟負載(Nginx)+ Tomcat集群,現在的問題是SSl證書要配置在哪里,直接配置在硬負載上?還是分別配置在Nginx和Tomcat上?還是其他的配置方法呢?
首先在硬負載上配置放棄了,然后通過在網上查找資料,發現可以只在Nginx上配置證書,就是說Nginx接入使用Https,而Nginx與Tomcat之間使用Http進行銜接,這樣就游了一個整體思路。
關于SSL證書
關于SSL證書這里簡單進行介紹,也是因為項目需要,進行了簡單的了解。
SSL證書分為大致分為三種,域名級(DV)、企業級(OV)、增強級(EV),安全性以及價格依次增加。根據自己的需求進行選擇,個人使用可以使用DV,便宜;企業用的話一般使用OV,特殊情況下使用EV。下面是幾家云服務商的OV SSL證書的價格對比,Symantec和GeoTrust被選用的比較多,都屬于賽門鐵克旗下。
云服務商 | 證書品牌 | 價格 |
---|---|---|
阿里云 | Symantec | 4000/年 |
阿里云 | GeoTrust | 2062.4/年 |
騰訊云 | Symantec | 5000/年 |
騰訊云 | GeoTrust | 2850/年 |
西部數碼 | Symantec | 3880/年 |
西部數碼 | GeoTrust | 2137/年 |
SSL證書配置
由于Nginx對于SSL證書配置的支持才使得這種實現方式成為了可能,不得不感嘆Nginx的強大。
證書準備
Nginx配置需要.pem/.crt證書 + .key秘鑰,如果您現在擁有的是其他形式的證書,請按照相關說明轉化成要求的證書類型,否則是不能完成證書的配置的。一般購買商家都會有相應的轉換工具。
準備好了之后,將證書和秘鑰放到Nginx的conf目錄下(也就是跟配置文件nginx.conf在同一個目錄),這里特別需要注意:
修改Nginx配置文件
以下是我nginx.conf配置文件的局部,端口著迷沒有使用默認的443,而是改成了8185,根據您的需要進行修改即可,其他配置基本上按照下面就沒問題。
server { listen 8185; server_name localhost; ssl on; ssl_certificate server.pem; ssl_certificate_key server.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; ssl_prefer_server_ciphers on; location / { proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 5; proxy_send_timeout 5; proxy_read_timeout 5; proxy_pass http://qlddm_server; }
修改Tomcat配置文件
雖然不需要在Tomcat配置證書,但是仍然需要修改一下Tomcat的配置Server.xml配置文件,具體包含兩個地方:
<Connector executor="tomcatThreadPool" port="7083" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" maxConnections="8000" redirectPort="8185" proxyPort="8185" enableLookups="false" acceptCount="100" maxPostSize="10485760" compression="on" disableUploadTimeout="true" compressionMinSize="2048" acceptorThreadCount="2" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" URIEncoding="utf-8" />
需要將redirectPort和proxyPort都修改為您的Nginx監聽端口號。
<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https" httpsServerPort="8185"/>
需要增加以上的Value標簽,注意httpsServerPort也需要修改為Nginx監聽端口號。
寫在最后
至此,關于SSL的配置基本上就完成了,啟動Nginx以及Tomcat容器之后,不出意外應該就可以通過Https正常訪問了。另外想說的是,由于本人工作場景是一個硬負載均衡兩臺服務器,所以相同的配置需要在兩臺服務器上分別做一次。本文僅供參考,如對您有所幫助,實乃萬幸,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。