摘要:要保證瀏覽器到服務(wù)器的安全連接,幾乎是唯一選擇。使用證書來(lái)創(chuàng)建安全連接。如果要提供一個(gè)有效的證書,服務(wù)器的證書必須從這樣的證書頒發(fā)機(jī)構(gòu)簽名,這樣,瀏覽器就可以驗(yàn)證通過(guò),否則,瀏覽器給出一個(gè)證書無(wú)效的警告。
要保證Web瀏覽器到服務(wù)器的安全連接,HTTPS幾乎是唯一選擇。HTTPS其實(shí)就是HTTP over SSL,也就是讓HTTP連接建立在SSL安全連接之上。
SSL使用證書來(lái)創(chuàng)建安全連接。有兩種驗(yàn)證模式:
僅客戶端驗(yàn)證服務(wù)器的證書,客戶端自己不提供證書;
客戶端和服務(wù)器都互相驗(yàn)證對(duì)方的證書。
顯然第二種方式安全性更高,一般用網(wǎng)上銀行會(huì)這么搞,但是,普通的Web網(wǎng)站只能采用第一種方式。
客戶端如何驗(yàn)證服務(wù)器的證書呢?服務(wù)器自己的證書必須經(jīng)過(guò)某“權(quán)威”證書的簽名,而這個(gè)“權(quán)威”證書又可能經(jīng)過(guò)更權(quán)威的證書簽名,這么一級(jí)一級(jí)追溯上去,最頂層那個(gè)最權(quán)威的證書就稱為根證書。根證書直接內(nèi)置在瀏覽器中,這樣,瀏覽器就可以利用自己自帶的根證書去驗(yàn)證某個(gè)服務(wù)器的證書是否有效。
如果要提供一個(gè)有效的證書,服務(wù)器的證書必須從VeriSign這樣的證書頒發(fā)機(jī)構(gòu)簽名,這樣,瀏覽器就可以驗(yàn)證通過(guò),否則,瀏覽器給出一個(gè)證書無(wú)效的警告。
申請(qǐng)一個(gè)證書簽名的費(fèi)用是一年幾十~幾百刀不等,所以如果只是出于管理目的,可以創(chuàng)建自簽名證書,保證管理員通過(guò)瀏覽器安全連接到服務(wù)器。
下面簡(jiǎn)單介紹如何創(chuàng)建一個(gè)自簽名的SSL證書。
創(chuàng)建自簽名證書需要安裝openssl,使用以下步驟:
創(chuàng)建Key;
創(chuàng)建簽名請(qǐng)求;
將Key的口令移除;
用Key簽名證書。
為HTTPS準(zhǔn)備的證書需要注意,創(chuàng)建的簽名請(qǐng)求的CN必須與域名完全一致,否則無(wú)法通過(guò)瀏覽器驗(yàn)證。
以上步驟命令繁瑣,所以我做了一個(gè)shell腳本,能一次性把證書搞定。從這里下載腳本:
https://github.com/chaleaoch/...
運(yùn)行腳本,假設(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次輸入的口令都是一樣的。
在當(dāng)前目錄下會(huì)創(chuàng)建出4個(gè)文件:
www.test.com.crt:自簽名的證書
www.test.com.csr:證書的請(qǐng)求
www.test.com.key:不帶口令的Key
www.test.com.origin.key:帶口令的Key
Web服務(wù)器需要把www.test.com.crt發(fā)給瀏覽器驗(yàn)證,然后用www.test.com.key解密瀏覽器發(fā)送的數(shù)據(jù),剩下兩個(gè)文件不需要上傳到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; }
如果一切順利,打開(kāi)瀏覽器,就可以通過(guò)HTTPS訪問(wèn)網(wǎng)站。第一次訪問(wèn)時(shí)會(huì)出現(xiàn)警告(因?yàn)槲覀兊淖院灻C書不被瀏覽器信任),把證書通過(guò)瀏覽器導(dǎo)入到系統(tǒng)(Windows使用IE導(dǎo)入,Mac使用Safari導(dǎo)入)并設(shè)置為“受信任”,以后該電腦訪問(wèn)網(wǎng)站就可以安全地連接Web服務(wù)器了:
self-signed-cert
如何在應(yīng)用服務(wù)器中配置證書呢?例如Tomcat,gunicorn等。正確的做法是不配置,讓Nginx處理HTTPS,然后通過(guò)proxy以HTTP連接后端的應(yīng)用服務(wù)器,相當(dāng)于利用Nginx作為HTTPS到HTTP的安全代理,這樣即利用了Nginx的HTTP/HTTPS處理能力,又避免了應(yīng)用服務(wù)器不擅長(zhǎng)HTTPS的缺點(diǎn)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39873.html
摘要:因?yàn)檫@次上線的網(wǎng)站沒(méi)有什么并發(fā)量,方式要比的方式快而且消耗資源少,所以我還是采用方式。 上線前準(zhǔn)備 購(gòu)買服務(wù)器,目前選擇的是阿里云服務(wù)器,選擇的是入門型1核1G實(shí)例 目前沒(méi)什么活動(dòng),三年1400軟妹幣 配置SSH連接 增加本機(jī)ssh連接配置,一般激活實(shí)例后,ssh的22端口是默認(rèn)開(kāi)放的,可以直接通過(guò)root用戶進(jìn)行登錄配置部署環(huán)境 登錄到服務(wù)器后,將自己的公鑰加入到 ~/.ssh/a...
摘要:因?yàn)檫@次上線的網(wǎng)站沒(méi)有什么并發(fā)量,方式要比的方式快而且消耗資源少,所以我還是采用方式。 上線前準(zhǔn)備 購(gòu)買服務(wù)器,目前選擇的是阿里云服務(wù)器,選擇的是入門型1核1G實(shí)例 目前沒(méi)什么活動(dòng),三年1400軟妹幣 配置SSH連接 增加本機(jī)ssh連接配置,一般激活實(shí)例后,ssh的22端口是默認(rèn)開(kāi)放的,可以直接通過(guò)root用戶進(jìn)行登錄配置部署環(huán)境 登錄到服務(wù)器后,將自己的公鑰加入到 ~/.ssh/a...
摘要:源碼安裝文件下載下載源碼下載下載源碼下載下載源碼下載源碼下載源碼下載源碼包解壓命令包解壓命令安裝安裝前的準(zhǔn)備安裝安裝安裝安裝安裝需要的擴(kuò)展安裝安裝時(shí)需要的擴(kuò)展安裝在源碼目錄中執(zhí)行以下操作執(zhí)行命 源碼安裝 1. 文件下載 1.1 下載PHP源碼 php.net 下載 php-7.2.7.tar.gz 1.2 下載swoole源碼 https://github.com/swoole/s...
閱讀 2035·2023-04-25 22:50
閱讀 2846·2021-09-29 09:35
閱讀 3404·2021-07-29 10:20
閱讀 3170·2019-08-29 13:57
閱讀 3372·2019-08-29 13:50
閱讀 3048·2019-08-26 12:10
閱讀 3552·2019-08-23 18:41
閱讀 2647·2019-08-23 18:01