国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SSL/TLS 介紹以及如何利用openssl生成證書

這篇具有很好參考價值的文章主要介紹了SSL/TLS 介紹以及如何利用openssl生成證書。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

介紹

SSL:Secure Socket Layer 安全套接字層。

TLS:Transport layer Security 傳輸層安全性,是一種加密協(xié)議。

發(fā)展歷程

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

到2020年,SSL以及TLS1.0,TLS1.1已被棄用

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

TLS用在哪里?

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

為什么用TLS?

Authentication:通信雙方可以確認雙方的身份,不被黑客攔截信息偽造身份。

Confidentiality:通信的內(nèi)容經(jīng)過加密,更加安全,不被授權(quán)的用戶無法識別內(nèi)容。

Integroty:通訊內(nèi)容可以查出是否被破壞。

TLS是怎么工作的?

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

兩階段:

  1. 握手階段,雙方通過非對稱加密通信,建立連接,傳輸用于加密數(shù)據(jù)的對稱秘鑰

  1. 通信階段,雙方通過對稱秘鑰加密數(shù)據(jù),互相通信

為什么TLS同時采用了非對稱加密和對稱加密呢?

  1. 只用對稱加密的話,我們不能保證雙方在商量秘鑰是什么的情況下秘鑰在網(wǎng)絡(luò)傳輸中不被泄露,也不能確認信息是否被修改了。

  1. 如果只用非對稱加密的話,它比對稱加密的效率要低上成千上萬倍。

對稱密碼學

一般對稱加密方式,發(fā)送方和接收方共享一個秘鑰,發(fā)送方利用秘鑰加密,接收方利用秘鑰解密。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

上述的加密,黑客可以對信息攔截并進行位翻轉(zhuǎn)來進行攻擊。請看下面的例子。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

由于信息可能會被篡改,所以現(xiàn)在還需要進行驗證信息的真?zhèn)巍?/p>

所以要為傳輸?shù)男畔⒏缴向炞C信息。

帶有驗證信息的對稱加密過程:
  1. 根據(jù)秘鑰 secret key和初始向量 IV 通過對稱加密算法,對明文進行加密。

  1. 將秘鑰,初始向量,密文通過MAC算法,生成HASH串,作為驗證code。使用MAC算法時我們還可以添加一些附加信息,這些信息是明文的,且應當是雙方知道的。

  1. 將驗證code附加到密文上,一起傳輸。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
帶有驗證信息的解密過程:
  1. 將驗證信息取出。

  1. 將秘鑰 ,IV,附加信息,密文通過MAC算法得到新的hash串。

  1. 比較兩個hash串是否一致,一致就可以通過秘鑰和IV進行解密得到明文

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
現(xiàn)在還存在一個問題?雙方是怎么共享秘鑰的?

為了保證傳輸過程中秘鑰的安全性,我們通過非對稱加密來共享秘鑰。非對稱加密的具體流程在下面有專門的講述。

首先雙方生成各自的私鑰和公鑰,生成的算法有很多,RSA算法,ECC算法(與橢圓曲線有關(guān))

下面介紹的是Diffile-Hellman Ephemeral(DHE)

g是一個公知的冪的底,p為公知的一個模。g,p是雙方都認可的一個值

雙方各自選擇一個值作為自己的私鑰,比如說發(fā)送方為a,接收方為b。

然后雙方計算出各自的公鑰A,B,并且傳送給對方。

雙方收到后通過計算可以得到S,這個值雙方計算出來是一樣的。如何計算看下圖。

雙方就可以通過S這個共享秘鑰來進行數(shù)據(jù)加密。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

現(xiàn)在還存在一個問題,S的長度是不固定的,我們還需要用HKDF進行一次轉(zhuǎn)換,把它轉(zhuǎn)換為確切長度的key。

HKDF(H mark base key derivation functon)

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

p,g,A,B對公眾來說都是已知的,黑客是否可以通過p,g,A,B算出a,b的值來呢?

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

我們可以看到 p有2048bit,a,b各有256bit。

算法很簡單,但是很難算出來

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

但是如果我們多次對話都用同樣的a,b的話,早晚會被算出來

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

所以我們應使用臨時秘鑰,每一次會話都重新商議秘鑰

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

成熟的非對稱加密算法有RSA,EEC

RSA:類似于剛才說的那種生成私鑰和公鑰的方法。

EEC: 在生成公鑰和私鑰時,用到的橢圓曲線。具體如何不展開。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

下面是EEC,RSA秘鑰位數(shù)與安全級別的對比

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

非對稱加密算法

通過DHE,ECDHE實現(xiàn)隱秘的共享秘鑰的交換

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
加密是怎么運轉(zhuǎn)的
openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

雙方之間公鑰的傳輸,在這個過程中,public key可以被黑客攔截,偽造public key重新發(fā)送給接收方。此時當接收方用偽造的public key進行加密時,黑客便可以通過他的私鑰進行解密。造成這樣現(xiàn)象的原因是因為public key 沒有任何的驗證信息,接收方無法確認public key到底來自誰。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

所以現(xiàn)在我們需要加入適當?shù)尿炞C信息,通過可靠的第三方認證機構(gòu),生成數(shù)字證書

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
CA證書的簽發(fā)過程
openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
  1. 創(chuàng)建一個certificate siging request(CSR),這個CSR中包含public key和發(fā)送方的一些身份信息。

  1. 發(fā)送方用private key 對CSR進行數(shù)字簽名。

  1. CA接收到后,根據(jù)csr中的public key 對簽名進行解簽,并且驗簽。

  1. CA認證完成后,對內(nèi)容用CA私鑰進行簽名,最后將簽名以及明文的信息返回給申請者。

數(shù)字證書的驗證

發(fā)送方發(fā)送證書到接收方,接受方通過CA的public key進行驗簽便可知道是否安全。

在此過程中,如果黑客修改了證書內(nèi)容,那么接受方在驗簽的過程中就不會通過。

黑客因為不知道CA的私鑰所以也無法偽造證書。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
數(shù)字簽名的過程

對信息進行HASH得到摘要,用私鑰對摘要進行加密,最后將簽名附在原文上。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
驗簽過程

收到信息后,將原文和簽名分開。

用公鑰對簽名解簽得到摘要1。

原文按照相同的hash算法得到摘要2。

比較摘要1和摘要2。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
Chain of trust

最上層為的CA的證書是自簽的。

根CA對下面的CA進行簽名。一層一層。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

TLS 1.3 HandShake

  1. client 發(fā)送hello message ,主題內(nèi)容包括支持的tls版本,支持的密碼套件(基本的形式是「密鑰交換算法 + 簽名算法 + 對稱加密算法 + 摘要算法」),支持的非對稱加密共享秘鑰的交換策略,公鑰的類型,以及支持的簽名算法,這個用于對handshake過程中的簽名,其中包括一個隨機數(shù)1。

這是TLS 的第一次握手。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
  1. server發(fā)送hello message,內(nèi)容包括

這是TLS的第二次握手,server會選擇tls版本,密碼套件,共享秘鑰的交換組,公鑰的類型,對client證書的請求(這個是可選的,當server需要驗證client的身份時),然后server會生成一個隨機數(shù)2,并將上述的信息,連同server的證書,握手上下文(從開始握手到對client證書的請求之間的上下文)與服務(wù)器證書的簽名(簽名過程用server的private key和client 提供的簽名算法進行簽名),握手上下文+server證書+verify的mac(先hash再通過選擇的AEAD套件中的mac算法進行mac運算),發(fā)送回去。

Server Certificate + Certificate verify +Server Finish 保證了在handshake過程中的安全。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
  1. client收到server的確認信息后,通過根證書來驗證簽名,并確定是否信息被修改。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
  1. 這是TLS的第三次握手,client驗證完后會生成隨機數(shù)3,并用server的公鑰進行了加密,服務(wù)器收到后會用私鑰解密得到隨機數(shù)3,此時,雙方都有了三個隨機數(shù),這三個隨機數(shù)生成會話密鑰,將自身的證書,隨機數(shù)3,verify,mac,change cipher Spec(告訴服務(wù)端后續(xù)將進行加密通訊)發(fā)送到server。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔
  1. server同樣發(fā)送change cipher Spec(告訴客戶端后續(xù)將進行加密通訊)和mac到client

后續(xù)就是利用會話密鑰進行會話的過程了。

Resumption & Pre-Shared-Key

但是服務(wù)器在與客戶端會話時,并不會總是采用上述的握手方式,上述方式太過繁瑣。有時他們會通過pre shared key來進行簡單的握手。

原理是在上一次握手之后,通信雙方已經(jīng)彼此認識,因此不需要再進行身份認證。

  1. 服務(wù)器可以向client發(fā)送一個或多個session ticket(會話憑證),這個憑證可以在下一次握手時使用,PSK identity是對PMS的標識。

  1. 下一次握手時,client會發(fā)送hello message 內(nèi)容有session ticket list,以及相關(guān)的PSK模式,等信息。

  1. server 發(fā)送hello message,內(nèi)容包括選定的PSK,以及mac

  1. client確認發(fā)送回mac。

可以看出這次握手沒有證書的驗證過程,只是利用了上次握手確認的詳細信息,此次握手僅通過PSK來恢復上次現(xiàn)場。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

在這基礎(chǔ)上,我們可以在handshake的hello message 的發(fā)送中附加上要傳輸?shù)臄?shù)據(jù)。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

TLS1.3與1.2的對比。

openssl生成ssl證書,網(wǎng)絡(luò),https,ssl,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

如何用Openssl來簽發(fā)證書和創(chuàng)建私鑰?

  1. 在本地模擬CA認證機構(gòu),先為自己創(chuàng)建一個私鑰,以及自簽證書(簽名時用的自己的私鑰)

openssl req -x509 -newkey rsa:4096 -days 365 -nodes -keyout ca-key.pem -out ca-cert.pem -subj "/C=CH/ST=GANSU/L=LANZHOU/O=LZU/OU=HIGHSCHOOL/CN=*.tech.xiaobai/emailAddress=techschool@gmail.com"
req 代表生成證書請求 -x509 可以理解為一種證書的形式,-newKey 用來創(chuàng)建私鑰 rsa:4096表示用
rsa算法生成4096位的私鑰。-days 365為證書的有效期 -nodes是我們在開發(fā)時不對私鑰文件加密,
-keyout 私鑰的輸出文件,-out 證書的輸出文件,
-subj 為創(chuàng)建證書時的附件信息,包括”國家,地區(qū),組織,機構(gòu),郵箱等等“。

openssl x509 -in ca-cert.pem -noout -text 用來將證書轉(zhuǎn)為人類可識別的格式
x509格式 -in 指定證書文件 -noout 指不將格式化的內(nèi)容輸出為文件 -text 文本形式顯示
  1. 為server端創(chuàng)建私鑰并簽名一個certificate signing request (CSR)。

openssl req -newkey rsa:4096 -nodes  -keyout server-key.pem  -out server-req.pem -subj "/C=CH/ST=GANSU/L=LANZHOU/O=PC BOOK/OU=computer/CN=*.pcbook.com/emailAddress=pcbook@gmail.com"
因為我們這里并不是生成證書,所以沒有-x509參數(shù),而是生成了私鑰和帶有附加信息的CSR。
  1. CA驗證CSR并且簽名。文章來源地址http://www.zghlxwxcb.cn/news/detail-759277.html

openssl x509 -req -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
x509 證書形式, -req 來生成證書, -in 要簽名的證書, -CA CA的證書,-CAkey ca用來簽名的秘鑰, -CAcreateserial 
每次簽名生成一個唯一的序列號。
-out 生成的證書

到了這里,關(guān)于SSL/TLS 介紹以及如何利用openssl生成證書的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • openssl給內(nèi)網(wǎng)IP生成ca證書(ssl證書)

    openssl給內(nèi)網(wǎng)IP生成ca證書(ssl證書)

    ?注意:大家自己按照自己的目錄創(chuàng)建就行,我的直接放在/opt目錄下了。 ?注意:申請的時候會讓大家填一些參數(shù),下面是參數(shù)說明及示例: ?注意:這一步也會輸入?yún)?shù),要和上一次輸入的保持一致? ? ? ?注意:這一步也會輸入?yún)?shù),要和前兩次輸入的保持一致? 注意:

    2024年02月07日
    瀏覽(26)
  • 通過openSSL生成自簽名的SSL證書

    通過openSSL生成自簽名的SSL證書

    自簽名證書:就是 指的根證書,就是頒發(fā)者:和頒發(fā)給: 是相同的。證書的簽名是用證書里的公鑰對應的私鑰進行的簽名。這樣的證書除非是受信任的頒布機構(gòu)頒發(fā)f,一般是不被第三方信任。一般用于內(nèi)部使用及測試使用。 下面介紹生成證書的方法: 1. 生成私 鑰 要創(chuàng)建

    2023年04月17日
    瀏覽(19)
  • openssl生成nginx ssl證書的簡單方法

    [root@172-17-218-79 ~]# mkdir cert [root@172-17-218-79 ~]# cd cert/ [root@172-17-218-79 cert]# openssl genrsa -out server.key 1024 Generating RSA private key, 1024 bit long modulus (2 primes) ......+++++ .........................................+++++ e is 65537 (0x010001) [root@172-17-218-79 cert]# openssl req -new -key server.key -out server.csr You are abo

    2024年02月04日
    瀏覽(24)
  • Windows.OpenSSL生成ssl證書配置到nginx

    Windows.OpenSSL生成ssl證書配置到nginx

    生成一個隨機數(shù) 根證書是用于證書簽發(fā)的,證書的簽發(fā)機構(gòu)都有自己的根證書。他們的根證書一般已經(jīng)打包到瀏覽器的受信任的根證書目錄里了,我們自己簽發(fā)的需要手工安裝到這個目錄。 OpenSSL使用PEM(Privacy Enbanced Mail)格式來保存私鑰,生成私鑰的命令如下: 這一步會提

    2024年01月24日
    瀏覽(18)
  • MAC: 自己制作https的ssl證書(自己簽發(fā)免費ssl證書)(OPENSSL生成SSL自簽證書)

    MAC: 自己制作https的ssl證書(自己簽發(fā)免費ssl證書)(OPENSSL生成SSL自簽證書)

    現(xiàn)在https大行其道, ssl又是必不可少的環(huán)節(jié). 今天就教大家用開源工具openssl自己生成ssl證書的文件和私鑰 MAC電腦 openssl工具自行搜索安裝 1、終端執(zhí)行命令 2、輸入密碼,這里會輸入兩次. 填寫一樣即可. 隨意填寫一個. 下一步就會刪除這個密碼 3、輸入密碼,這里會輸入兩次. 填寫

    2024年04月14日
    瀏覽(232)
  • 【ssl認證、證書】openssl genrsa 命令詳解、生成和查看密鑰內(nèi)容

    相關(guān)文章: //-----------Java SSL begin---------------------- 【ssl認證、證書】SSL雙向認證和SSL單向認證的區(qū)別(示意圖) 【ssl認證、證書】java中的ssl語法API說明(SSLContext)、與keytool 工具的聯(lián)系 【ssl認證、證書】SSL雙向認證java實戰(zhàn)、keytool創(chuàng)建證書 【ssl認證、證書】Wireshark抓包分析 【s

    2024年02月11日
    瀏覽(17)
  • openssl安裝,openssl生成私鑰以及openssl生成證書

    openssl安裝,openssl生成私鑰以及openssl生成證書

    首先安裝perl工具,下載地址: Download Install Perl - ActiveState Download Perl 5.32 and 5.28 from ActiveState get precompiled Perl distribution. ActiveState Perl is free to download. https://www.activestate.com/activeperl/downloads 我下載了 這個版本(安裝過程下一步下一步即可) 我安裝在 C:Perl64 然后下載openssl: /s

    2024年02月08日
    瀏覽(51)
  • openssl 生成自簽名證書以及CA證書鏈

    執(zhí)行命令后,會提示你輸入一些內(nèi)容,請按照提示輸入,每一項輸入的內(nèi)容需要自己記住 其中root.ext手動創(chuàng)建,內(nèi)容如下: 中間證書的制作過程與根證書類似,這里直接將命令貼上。 這里涉及到一個ca_intermediate.ext,和root.ext類似,需要手動創(chuàng)建,內(nèi)容如下 輸出結(jié)果應該如下所

    2024年02月09日
    瀏覽(25)
  • SSL/TLS介紹以及wireshark抓包TLS Handshake報文

    SSL/TLS介紹以及wireshark抓包TLS Handshake報文

    SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是一種安全協(xié)議,用于在計算機網(wǎng)絡(luò)上實現(xiàn)加密通信。SSL最初由美國Netscape開發(fā),隨后發(fā)展為TLS,并得到了廣泛應用,成為互聯(lián)網(wǎng)上保護通信安全的標準協(xié)議。 TLS 位于 TCP 之上(也有基于 UDP 的,稱為DTLS,這里不討論它),如

    2024年02月03日
    瀏覽(26)
  • 如何在極狐GitLab 自定義 Pages 域名、SSL/TLS 證書

    如何在極狐GitLab 自定義 Pages 域名、SSL/TLS 證書

    本文作者:徐曉偉 GitLab 是一個全球知名的一體化 DevOps 平臺,很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發(fā)行版,專門為中國程序員服務(wù)??梢砸绘I式部署極狐GitLab。 本文主要講述了在極狐GitLab 用戶自定義 Pages 域名、SSL/TLS 域名證書。 默

    2024年04月26日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包