什么是Let's Encrypt
【現(xiàn)狀】Let’s Encrypt 是一家免費牍疏、開放蠢笋、自動化的證書頒發(fā)機構(gòu)(CA),為公眾的利益而運行鳞陨。它是一項由 Internet Security Research Group(ISRG)提供的服務(wù)昨寞。我們以盡可能對用戶友好的方式免費提供為網(wǎng)站啟用 HTTPS(SSL/TLS)所需的數(shù)字證書。這是因為我們想要創(chuàng)建一個更安全厦滤,更尊重隱私的 Web 環(huán)境援岩。
【為什么要做】任何擁有域名的人都可以使用 Let’s Encrypt 免費獲取受信的證書,
CA介紹
CA是Certificate Authority的縮寫掏导,也叫“證書授權(quán)中心”享怀,就是負責管理和簽發(fā)證書的第三方機構(gòu)。
證書解決的信任問題是什么
借用網(wǎng)上一位同學的例子:假如你供職于X公司碘菜,老板讓你去拜訪A公司老總談點業(yè)務(wù)凹蜈,此時你直接去可能前臺MM給你擋住了限寞,因為沒人認識你忍啸,那怎么辦?你發(fā)現(xiàn)C公司跟A公司業(yè)務(wù)往來密切履植,你對C公司也熟悉计雌,你就去找C公司的老板給你寫了封介紹信并且蓋上C公司章,然后你拿著介紹信去A公司玫霎,把介紹信給前臺MM一看凿滤,前臺MM一看C公司的章就信任你了,就讓你去拜訪了庶近。證書就是介紹信翁脆,通過蓋章的方式來解決信任問題。
數(shù)字簽名
簡而言之: 發(fā)信人對內(nèi)容進行hash 計算鼻种,得到內(nèi)容摘要(digest)–> 發(fā)信人對摘要使用私鑰加密反番,生成”數(shù)字簽名”(signature) –> 內(nèi)容附上數(shù)字簽名,一起發(fā)送叉钥。
身份驗證過程:
數(shù)字證書
內(nèi)容:含有公鑰罢缸,及公鑰擁有者的身份。
作用:1. 證明證書中的公鑰 就是信件發(fā)送者的的公鑰 投队; 2. 用通過認證的公鑰解密內(nèi)容
特點:1. 第三方權(quán)威機構(gòu)頒發(fā)枫疆;2. 具有有效期
數(shù)字證書使用:
由證書認證機構(gòu)(CA)對證書申請者真實身份驗證之后,用CA的根證書對申請人的一些基本信息以及申請人的公鑰進行簽名后形成的一個數(shù)字文件敷鸦,生成”數(shù)字證書”(Digital Certificate)息楔;
A 在發(fā)送信件給B的時候寝贡,同時附上簽名和證書;
B 用CA的公鑰解開數(shù)字證書值依,就可以拿到A 的真實公鑰了兔甘,然后就能證明”數(shù)字簽名”的是否屬A。
前文說到鳞滨,用數(shù)字簽名的方式 發(fā)送信件也是有一定風險的洞焙。比如公鑰被替換,無法知曉公鑰的來源或公鑰對應(yīng)的私鑰的持有者身份拯啦。于是澡匪,數(shù)字證書便有了它的作用。
證書怎么解決信任問題
- 找一個權(quán)威的證書頒發(fā)機構(gòu)褒链,發(fā)出第一個ROOT證書
- 所有人都信任根證書
- 根證書可以頒發(fā)其信任的下級證書
- 下級證書繼續(xù)頒發(fā)下級構(gòu)成證書樹狀結(jié)構(gòu)
- 規(guī)定在整證書鏈上有個信任的節(jié)點唁情,就信任此證書
Let’s Encrypt 是一個證書頒發(fā)機構(gòu)(CA)。要從 Let’s Encrypt 獲取您網(wǎng)站域名的證書甫匹,您必須證明您對域名的實際控制權(quán)甸鸟。您可以在您的 Web 主機上運行使用 ACME 協(xié)議的軟件來獲取 Let’s Encrypt 證書。
HTTPS,SSL,證書關(guān)系
- HTTPS是通過HTTP + SSL組成
- SSL的實現(xiàn)是通過安裝數(shù)字證書來實現(xiàn)
- CA簽發(fā)數(shù)字證書
- 數(shù)字證書包含了加解密的算法
- 數(shù)字證書用于建立信任并且分發(fā)公鑰
下圖為x.509證書的結(jié)構(gòu)
如何制作證書
選擇加解密算法-RAS
RAS一種非對稱加密算法兵迅,公鑰(PK)加密抢韭,私鑰(SK)解密,雖然SK是由PK決定的恍箭,但是大數(shù)分解計算量太大刻恭,無法窮舉破解,所以被認可扯夭。但是隨著量子計算的產(chǎn)生鳍贾,對其安全性將構(gòu)成威脅,RAS百科
通過openSSL制作證書
在說明證書制作過程前交洗,先說明制作證書時骑科,用到的幾類文件的作用
.key 文件:私鑰
.csr 文件:證書簽名請求文件,含有公鑰信息构拳,certificate signing request的縮
.crt 文件:用.csr 生成的證書文件咆爽,certificate的縮寫,這就是數(shù)字證書
生成自簽名根證書。就是模仿證書權(quán)威機構(gòu)的作用隐圾,給用戶提供一個權(quán)威機構(gòu)的根證書伍掀。在真實場景中,根證書是CA認證中心給自己頒發(fā)的證書,是信任鏈的起始點暇藏。任何安裝CA根證書的服務(wù)器都意味著對這個CA認證中心是信任的蜜笤。是信任鏈的起始點。任何安裝CA根證書的服務(wù)器都意味著對這個CA認證中心是信任的盐碱。
生成CA 的私鑰 openssl genrsa -out ca.key 2048
生成CA 證書請求文件 openssl req -new -key ca.key -out ca.csr
生成CA證書 openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
使用Let's證書 + Nginx搭建HTTPS服務(wù)器
- certbot生成證書文件
certbot certonly --standalone --preferred-challenges http-01 -d example.lopetech.net - 配置nginx
server {
listen 443 ssl; #指定ssl監(jiān)聽端口
server_name example.lopetech.net;
#ssl on; #開啟ssl支持
ssl_certificate /etc/letsencrypt/live/example.lopetech.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.lopetech.net/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定SSL服務(wù)器端支持的協(xié)議版本
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; #指定加密算法
ssl_prefer_server_ciphers on; #在使用SSLv3和TLS協(xié)議時指定服務(wù)器的加密算法要優(yōu)先于客戶端的加密算法
}