摘要:要保證瀏覽器到服務(wù)器的安全連接,幾乎是唯一選擇。使用證書來創(chuàng)建安全連接。如果要提供一個有效的證書,服務(wù)器的證書必須從這樣的證書頒發(fā)機構(gòu)簽名,這樣,瀏覽器就可以驗證通過,否則,瀏覽器給出一個證書無效的警告。
要保證Web瀏覽器到服務(wù)器的安全連接,HTTPS幾乎是唯一選擇。HTTPS其實就是HTTP over SSL,也就是讓HTTP連接建立在SSL安全連接之上。
SSL使用證書來創(chuàng)建安全連接。有兩種驗證模式:
僅客戶端驗證服務(wù)器的證書,客戶端自己不提供證書;
客戶端和服務(wù)器都互相驗證對方的證書。
顯然第二種方式安全性更高,一般用網(wǎng)上銀行會這么搞,但是,普通的Web網(wǎng)站只能采用第一種方式。
客戶端如何驗證服務(wù)器的證書呢?服務(wù)器自己的證書必須經(jīng)過某“權(quán)威”證書的簽名,而這個“權(quán)威”證書又可能經(jīng)過更權(quán)威的證書簽名,這么一級一級追溯上去,最頂層那個最權(quán)威的證書就稱為根證書。根證書直接內(nèi)置在瀏覽器中,這樣,瀏覽器就可以利用自己自帶的根證書去驗證某個服務(wù)器的證書是否有效。
如果要提供一個有效的證書,服務(wù)器的證書必須從VeriSign這樣的證書頒發(fā)機構(gòu)簽名,這樣,瀏覽器就可以驗證通過,否則,瀏覽器給出一個證書無效的警告。
申請一個證書簽名的費用是一年幾十~幾百刀不等,所以如果只是出于管理目的,可以創(chuàng)建自簽名證書,保證管理員通過瀏覽器安全連接到服務(wù)器。
下面簡單介紹如何創(chuàng)建一個自簽名的SSL證書。
創(chuàng)建自簽名證書需要安裝openssl,使用以下步驟:
創(chuàng)建Key;
創(chuàng)建簽名請求;
將Key的口令移除;
用Key簽名證書。
為HTTPS準備的證書需要注意,創(chuàng)建的簽名請求的CN必須與域名完全一致,否則無法通過瀏覽器驗證。
以上步驟命令繁瑣,所以我做了一個shell腳本,能一次性把證書搞定。從這里下載腳本:
https://github.com/chaleaoch/...
運行腳本,假設(shè)你的域名是www.test.com,那么按照提示輸入:
$ ./gencert.sh Enter your domain [www.example.com]: www.test.com Create server key... Generating RSA private key, 1024 bit long modulus .................++++++ .....++++++ e is 65537 (0x10001) Enter pass phrase for www.test.com.key:輸入口令 Verifying - Enter pass phrase for www.test.com.key:輸入口令 Create server certificate signing request... Enter pass phrase for www.test.com.key:輸入口令 Remove password... Enter pass phrase for www.test.com.origin.key:輸入口令 writing RSA key Sign SSL certificate... Signature ok subject=/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=www.test.com Getting Private key TODO: Copy www.test.com.crt to /etc/nginx/ssl/www.test.com.crt Copy www.test.com.key to /etc/nginx/ssl/www.test.com.key Add configuration in nginx: server { ... ssl on; ssl_certificate /etc/nginx/ssl/www.test.com.crt; ssl_certificate_key /etc/nginx/ssl/www.test.com.key; }
紅色部分是輸入,注意4次輸入的口令都是一樣的。
在當前目錄下會創(chuàng)建出4個文件:
www.test.com.crt:自簽名的證書
www.test.com.csr:證書的請求
www.test.com.key:不帶口令的Key
www.test.com.origin.key:帶口令的Key
Web服務(wù)器需要把www.test.com.crt發(fā)給瀏覽器驗證,然后用www.test.com.key解密瀏覽器發(fā)送的數(shù)據(jù),剩下兩個文件不需要上傳到Web服務(wù)器上。
以Nginx為例,需要在server {...}中配置:
server { ... ssl on; ssl_certificate /etc/nginx/ssl/www.test.com.crt; ssl_certificate_key /etc/nginx/ssl/www.test.com.key; }
如果一切順利,打開瀏覽器,就可以通過HTTPS訪問網(wǎng)站。第一次訪問時會出現(xiàn)警告(因為我們的自簽名證書不被瀏覽器信任),把證書通過瀏覽器導(dǎo)入到系統(tǒng)(Windows使用IE導(dǎo)入,Mac使用Safari導(dǎo)入)并設(shè)置為“受信任”,以后該電腦訪問網(wǎng)站就可以安全地連接Web服務(wù)器了:
self-signed-cert
如何在應(yīng)用服務(wù)器中配置證書呢?例如Tomcat,gunicorn等。正確的做法是不配置,讓Nginx處理HTTPS,然后通過proxy以HTTP連接后端的應(yīng)用服務(wù)器,相當于利用Nginx作為HTTPS到HTTP的安全代理,這樣即利用了Nginx的HTTP/HTTPS處理能力,又避免了應(yīng)用服務(wù)器不擅長HTTPS的缺點。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/39873.html
摘要:因為這次上線的網(wǎng)站沒有什么并發(fā)量,方式要比的方式快而且消耗資源少,所以我還是采用方式。 上線前準備 購買服務(wù)器,目前選擇的是阿里云服務(wù)器,選擇的是入門型1核1G實例 目前沒什么活動,三年1400軟妹幣 配置SSH連接 增加本機ssh連接配置,一般激活實例后,ssh的22端口是默認開放的,可以直接通過root用戶進行登錄配置部署環(huán)境 登錄到服務(wù)器后,將自己的公鑰加入到 ~/.ssh/a...
摘要:因為這次上線的網(wǎng)站沒有什么并發(fā)量,方式要比的方式快而且消耗資源少,所以我還是采用方式。 上線前準備 購買服務(wù)器,目前選擇的是阿里云服務(wù)器,選擇的是入門型1核1G實例 目前沒什么活動,三年1400軟妹幣 配置SSH連接 增加本機ssh連接配置,一般激活實例后,ssh的22端口是默認開放的,可以直接通過root用戶進行登錄配置部署環(huán)境 登錄到服務(wù)器后,將自己的公鑰加入到 ~/.ssh/a...
摘要:源碼安裝文件下載下載源碼下載下載源碼下載下載源碼下載源碼下載源碼下載源碼包解壓命令包解壓命令安裝安裝前的準備安裝安裝安裝安裝安裝需要的擴展安裝安裝時需要的擴展安裝在源碼目錄中執(zhí)行以下操作執(zhí)行命 源碼安裝 1. 文件下載 1.1 下載PHP源碼 php.net 下載 php-7.2.7.tar.gz 1.2 下載swoole源碼 https://github.com/swoole/s...
閱讀 2020·2023-04-25 22:50
閱讀 2834·2021-09-29 09:35
閱讀 3390·2021-07-29 10:20
閱讀 3153·2019-08-29 13:57
閱讀 3356·2019-08-29 13:50
閱讀 3032·2019-08-26 12:10
閱讀 3530·2019-08-23 18:41
閱讀 2634·2019-08-23 18:01