成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Nginx(3)-創(chuàng)建 https 站點(diǎn)

hss01248 / 1302人閱讀

摘要:常見的對稱加密算法密鑰長度可選等非對稱加密非對稱加密,密鑰成對出現(xiàn),一公一私。申請者將自己的公鑰和個人站點(diǎn)信息發(fā)送給,請求其做認(rèn)證。定義了證書的結(jié)構(gòu)以及認(rèn)證協(xié)議標(biāo)準(zhǔn),目前使用的是第三版。

對稱加密

對稱加密中加密和解密使用相同的密鑰,加解密速度快,算法公開,計(jì)算量小。

使用對稱加密,交易雙方都使用同樣鑰匙,安全性得不到保證;每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發(fā)收信雙方所擁有的鑰匙數(shù)量呈幾何級數(shù)增長,密鑰管理成為用戶的負(fù)擔(dān)。對稱加密算法在分布式網(wǎng)絡(luò)系統(tǒng)上使用較為困難,主要是因?yàn)槊荑€管理困難,使用成本較高。

常見的對稱加密算法:

DES(Data Encryption Standard)

3DES

AES(Advanced Encryption Standard)密鑰長度可選128/192/258/384/512 bits

RC2、RC4、RC5、Blowfish 等

非對稱加密

非對稱加密,密鑰成對出現(xiàn),一公一私。公鑰(public key)公開給所有人,而私鑰自己保存,必須保證其私密性,如對私鑰加密或設(shè)置權(quán)限。

Bob將信息使用 Alice 的公鑰加密后發(fā)送給Alice,Alice 使用私鑰解密加密的文檔。非對稱加密同樣也可以認(rèn)證身份,Alice 用自己的私鑰加密信息,如果 Bob 能用 Alice 的公鑰解密,則身份認(rèn)證成功。

非對稱加密的三種用途:

數(shù)字簽名:用于讓接收方確認(rèn)發(fā)送方的身份,并確認(rèn)數(shù)據(jù)沒有篡改

密鑰交換:發(fā)送方用對方的公鑰加密一個對稱密鑰,并發(fā)送給對方

數(shù)據(jù)加密

常見的非對稱加密算法:

RSA:加密、解密、簽名

DSA:簽名

中間人攻擊Man-in-the-middle attack

Alice向 Bob 索取他的公鑰,Bob 將他的公鑰發(fā)送給 Alice,并且此時 Mallory 攔截到 Bob 的公鑰

Mallory 將自己的公鑰發(fā)送給 Alice,Alice 認(rèn)為 Mallory 的公鑰就是 Bob 的公鑰

Alice 用 Mallory 的公鑰加密并將信息發(fā)送給 Bob,Mallory 攔截 Alice 信息,并解密

Mallory 將消息查看或者修改后,使用之前攔截的 Bob公鑰再次加密后,發(fā)送給 Bob

Bob 收到消息后,相信這是 Alice 發(fā)來的信息

單向加密

單向加密只能加密,不能解密,又稱為提取數(shù)據(jù)指紋。單向加密的作用是保證數(shù)據(jù)的完整性,單向加密會定長輸入,當(dāng)原有數(shù)據(jù)被改變后,輸出會完全變化,又稱為雪崩效應(yīng)。

常見的單向加密算法:

md5:128bit,按4位二進(jìn)制組合成一個16進(jìn)制數(shù),結(jié)果由32個十六進(jìn)制數(shù)組成的數(shù)字串

sha1:160bit

sha224、sha256、sha384、sha512

PKI公鑰基礎(chǔ)設(shè)施

PKI 公鑰基礎(chǔ)設(shè)施是抵御中間人攻擊的一種認(rèn)證技術(shù),方法是 PKI 的相互認(rèn)證的機(jī)制。

只要能安全的傳輸公鑰,就能避免中間人攻擊。要保證公鑰不被替換,就需要一個可信的認(rèn)證機(jī)構(gòu)對公鑰進(jìn)行公證。

PKI 的主要的四個組件:

簽證結(jié)構(gòu):CA,生成數(shù)字證書

登記機(jī)構(gòu):RA,接收證書請求,驗(yàn)證請求者身份,相當(dāng)于 CA 的前端代理

證書吊銷列表:CRL,保存證書頒發(fā)機(jī)構(gòu) CA 已經(jīng)吊銷的證書序列號和吊銷日期

PKI 存取庫:對用戶申請、證書、密鑰、CRL 和日志信息進(jìn)行存儲和管理

CA是有公信力的認(rèn)證中心。申請者將自己的公鑰和個人(站點(diǎn))信息發(fā)送給CA,請求其做認(rèn)證。CA進(jìn)行驗(yàn)證后,將申請人的信息和公鑰使用Hash算法提取消息摘要,然后CA使用自己的私鑰對消息摘要進(jìn)行加密形成數(shù)字簽名。CA將申請者的個人信息和申請者的公鑰加上數(shù)字簽名形成了數(shù)字證書,并發(fā)送給申請者。X.509定義了證書的結(jié)構(gòu)以及認(rèn)證協(xié)議標(biāo)準(zhǔn),目前使用的是第三版。

發(fā)送方發(fā)送信息時同時也發(fā)送自己的數(shù)字證書,當(dāng)接收方收到信息和數(shù)字證書時,接收方使用Hash算法對證書中的個人信息和公鑰進(jìn)行提取指紋,然后使用CA的公鑰對數(shù)字簽名進(jìn)行解密,對比自己生成的消息摘要和解密出來的數(shù)字簽名是否一致,如果一致,則發(fā)送方的公鑰可用。

CA本身也有證書來證明自己的身份,并且CA是一種樹形結(jié)構(gòu),高級別的CA會給低級別的CA做信用背書,操作系統(tǒng)和瀏覽器已經(jīng)內(nèi)置了頂層的CA證書。

CA 參與的安全通信過程:

首先保證CA為通信雙方都認(rèn)可的機(jī)構(gòu)

通信雙方向CA申請數(shù)字證書,包含了各自的公鑰

CA對通信雙方進(jìn)行合法性驗(yàn)證,通過則使用CA的私鑰對申請文件進(jìn)行加密(數(shù)字簽名),并將數(shù)字簽名和個人信息整理為一個數(shù)字證書

通信雙方下載各自由CA簽發(fā)的數(shù)字證書

當(dāng)發(fā)送方要發(fā)送信息時,首先向接收方請求其數(shù)字證書

接收方利用CA的公鑰檢查接收到的數(shù)字證書是否合法,并得到接收方的公鑰

發(fā)送方利用散列函數(shù)對明文數(shù)據(jù)提取指紋,然后通過程序隨機(jī)生成一個session key,利用這個session key對明文數(shù)據(jù)進(jìn)行對稱加密,最后發(fā)送方用接收方的公鑰對session key進(jìn)行非對稱加密

發(fā)送方將自己的證書和加密后的文件(包含session key)發(fā)送給接收方

接收方用CA的公鑰驗(yàn)證發(fā)送方數(shù)字證書的合法性,包括用CA的公鑰解密數(shù)字證書、用相同的簽名算法ID提取指紋并與簽名比對、數(shù)字證書的有效期、證書的主體名和被訪問的主機(jī)名或人名是否相同以及證書是否在吊銷列表中。
如果合法,則利用自己的私鑰對session key進(jìn)行解密得到明文數(shù)據(jù),然后利用散列函數(shù)對明文數(shù)據(jù)提取指紋,將自己得到的指紋與發(fā)送方發(fā)來的指紋進(jìn)行對比,如果一致,則沒有被篡改,安全通信完成。

以上,對稱加密和非對稱加密解決了數(shù)據(jù)的保密性,單向加密解決了數(shù)據(jù)的完整性,使用 PKI 解決了數(shù)據(jù)的可用性或者是來源合法性。這樣就建立了一個安全的通信。

SSL/TLS

1994年,NetScape公司設(shè)計(jì)了SSL協(xié)議(Secure Sockets Layer)的1.0版,但是未發(fā)布,設(shè)計(jì) SSL 的目的是是為了對http報(bào)文進(jìn)行加密,隨后又陸續(xù)發(fā)布了2.0和3.0。1999年,互聯(lián)網(wǎng)標(biāo)準(zhǔn)化組織ISOC接替NetScape公司,發(fā)布了SSL的升級版TLS (Transport Layer Security)1.0版,目前 TLS 的版本是TLS 1.3。

SSL/TLS發(fā)生作用的位置在 ISO/OSI 參考模型中的表示層、TCP/IP 模型中的應(yīng)用層。

SSL協(xié)議分為兩部分:Handshake protocol和Record Protocol。

Handshake Protocol用來在通信雙方協(xié)商出一個安全的會話密鑰以供后續(xù)對稱加密中使用。Record Protocol則定義了傳輸?shù)姆庋b格式。

SSL/TLS協(xié)議通信的大概過程:

客戶端向服務(wù)端索要公鑰(證書)并驗(yàn)證

雙方協(xié)商生成“會話密鑰”

后續(xù)使用“會話密鑰”加密通信

首先,客戶端發(fā)出請求(ClientHello),將本地支持的加密套件(Cipher Suit)的列表,也就是本地支持的加密算法、支持的TLS版本、支持的壓縮方法發(fā)送到服務(wù)端。另外產(chǎn)生一個隨機(jī)數(shù)發(fā)送到服務(wù)端,同時保存在本地一個副本,稍后用于生成會話密鑰。

然后,服務(wù)端回應(yīng)(ServerHello),將服務(wù)端的數(shù)字證書發(fā)送給客戶端,并確認(rèn)使用的加密通信協(xié)議版本(也就是安全套件)、服務(wù)器生成的隨機(jī)數(shù)、確認(rèn)使用的加密算法。

其次,客戶端收到服務(wù)端證書根據(jù)證書鏈驗(yàn)證真實(shí)性后,得到服務(wù)器的可信公鑰,然后再發(fā)送一個新的隨機(jī)數(shù)、編碼改變通知(隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送)、客戶端握手結(jié)束通知。

最后,服務(wù)端收到第三個隨機(jī)數(shù)后,計(jì)算生成本次會話使用的會話密鑰,然后發(fā)送編碼改變通知和服務(wù)器握手結(jié)束通知。

隨后的通信使用的http協(xié)議,然后使用會話密鑰加密。

TLS 安全密碼套件

密鑰交換

身份驗(yàn)證

對稱加密算法、強(qiáng)度、分組模式

簽名 hash 算法

使用私有 CA 實(shí)現(xiàn) https 站點(diǎn)

建立私有 CA

1.安裝 openssl:yum install openssl -y

2.生成 CA 的密鑰對:(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

3.生成自簽證書和相關(guān)文件:openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365

req:生成證書簽署請求

-new:新請求

-key ...:指定私鑰文件

-out .../-x509:生成自簽署證書的位置和格式

-days:有效天數(shù)

4.初始化 CA 工作環(huán)境: touch /etc/pki/CA/{index.txt,serial};echo 01/etc/pki/CA/serial

與 CA 配置的相關(guān)文件是/etc/pki/tls/openssl.cnf ,index.txt是數(shù)據(jù)庫索引文件, serial 是用來記錄簽證相關(guān)信息的。

站點(diǎn)申請證書

1.安裝 openssl

2.生成密鑰,保存在服務(wù)配置文件目錄下

mkdir /usr/nginx-1.14.2/conf/ssl
ln -s /usr/nginx-1.14.2/conf/ssl/ /etc/nginx/ssl
(umask 077;openssl genrsa -out /etc/nginx/ssl/nginx.key 2048)

3.生成證書簽署請求:openssl req -new -key /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.csr

需要注意的是,填寫的信息需要與 CA 端保持一致,Organization Name 也必須保持一致。

4.將簽署請求文件 nginx.csr發(fā)送給 CA 服務(wù)

CA 簽署請求文件

1.簽署請求文件:openssl ca -in /tmp/nginx.csr -out /tmp/nginx.crt -days 365

2.將證書發(fā)送給請求客戶端

3.其他:CA 吊銷證書openssl ca -revoke nginx.crt

站點(diǎn)部署證書

將證書保存在/etc/nginx/ssl/目錄下,由于之前編譯安裝的 nginx,默認(rèn)沒有將ssl_module編譯,所以需要重新將帶有 ssl 模塊一同編譯nginx。

回到 Nginx 源碼目錄下,加上 SSL 模塊,再次編譯:

./configure --prefix=/usr/nginx-1.14.2/ --with-http_ssl_module
make

由于當(dāng)前操作是升級操作,之前使用的 Nginx 配置文件等不能被覆蓋,所以不能使用make install,需要備份原nginx 二進(jìn)制文件,將新的 nginx 二進(jìn)制文件覆蓋即可

cp /usr/nginx-1.14.2/sbin/nginx /usr/nginx-1.14.2/sbin/nginx.without_ssl.bak
cp /tmp/nginx-1.14.2/objs/nginx /usr/nginx-1.14.2/sbin/nginx

objs/nginx是新編譯的 nginx 程序,覆蓋原 nginx 程序,啟動 nginx。

修改nginx配置文件,開啟 https

server {
        listen  443; #監(jiān)聽端口為443
        server_name devops.yellowdog.com;

        ssl on; #開啟 ssl
        ssl_certificate /etc/nginx/ssl/nginx.crt; #證書位置
        ssl_certificate_key /etc/nginx/ssl/nginx.key; #私鑰位置
        ssl_session_timeout 5m; 
        ssl_protocols SSLv2 SSLv3 TLSv1; #指定密碼為 openssl 支持的格式
        ssl_ciphers HIGH:!aNull:!MD5; #密碼加密方式
        ssl_prefer_server_ciphers on; #依賴 SSLv3和 TLSv1協(xié)議的服務(wù)器密碼將優(yōu)先于客戶端密碼
        location / {
            alias dlib/; #根目錄相對位置
        }
    }

另外還設(shè)置將80端口的訪問重定向至443端口

server {
    listen       80;
    server_name  devops.yellowdog.com;
    rewrite ^(.*)$ https://$server_name$1 permanent;
}
總結(jié)

部署 https 站點(diǎn)總體不難,但重點(diǎn)要理解安全通信中的原理。

推薦文章:圖解openssl實(shí)現(xiàn)私有CA

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/40380.html

相關(guān)文章

  • Ubuntu Nginx 配置多站點(diǎn)

    摘要:然后再將這兩個文件夾給定權(quán)限和所有權(quán)上面的就是默認(rèn)的用戶組合用戶名。 原文來自: https://www.codecasts.com/blo... 在維護(hù) codecasts 期間,遇到很多次一個 nginx 如何配置多個站點(diǎn) 的問題,我通常的回復(fù)就是:多添加一個 server 的 block 配置就好了,然而很多同學(xué)還是沒能配置成功,今天我們仔細(xì)來看看在 一臺 Ubuntu 的服務(wù)器...

    xi4oh4o 評論0 收藏0
  • 從零開始配置 Nginx + HTTPS

    摘要:是一款輕量級的服務(wù)器反向代理服務(wù)器及電子郵件代理服務(wù)器,并在一個協(xié)議下發(fā)行。表明它使用了,但存在不同于的默認(rèn)端口及一個加密身份驗(yàn)證層在與之間?,F(xiàn)在它被廣泛用于萬維網(wǎng)上安全敏感的通訊,例如交易支付方面。 Nginx Nginx是一款輕量級的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個BSD-like 協(xié)議下發(fā)行。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上...

    J4ck_Chan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<